为什么我用AndroidJavaClass得到类未找到异常


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");

相关内容

  • 没有找到相关文章

最新更新