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
答案 0 :(得分:1)
它根本找不到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");