StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.build();
StrictMode.setThreadPolicy(policy);
我尝试了以下代码,但为ThreadPolicy 找不到的类生成了异常
#if UNITY_ANDROID
using (AndroidJavaClass strictModeClass = new AndroidJavaClass("android.os.StrictMode"))
{
using (AndroidJavaClass threadpolicy = new AndroidJavaClass("android.os.StrictMode.ThreadPolicy"))
{
AndroidJavaObject Builder = threadpolicy.Call<AndroidJavaObject>("Builder");
AndroidJavaObject permitall = Builder.Call<AndroidJavaObject>("permitAll");
AndroidJavaObject build = permitall.Call<AndroidJavaObject>("build");
strictModeClass.Call<AndroidJavaObject>("setThreadPolicy", build);
}
}
#endif
它在Java端根本找不到类。这可能是由于我拼写错误,ProGuard混淆了类名或包和插件与项目中未包含的类。
在您的情况下,在AndroidJavaClass("android.os.StrictMode.ThreadPolicy")
处会出现"未找到类"异常,因为ThreadPolicy
不是包,而是内部类,因此为了区分这两者,您必须告诉JRE您正在寻找内部类,这可以通过将内部类中的"."
替换为"$"
符号来完成。
更换
AndroidJavaClass threadpolicy = new AndroidJavaClass("android.os.StrictMode.ThreadPolicy")
带有
AndroidJavaClass threadpolicy = new AndroidJavaClass("android.os.StrictMode$ThreadPolicy");