为什么我的AndroidJavaClass找不到类异常?

时间:2018-11-08 12:54:48

标签: c# unity3d android-unity-plugin

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

1 个答案:

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