我正在使用Unity创建一个Android应用程序。
我有两个插件。每个插件单独使用时都很好,但当我想要同时使用它们时,我无法在它们之间切换活动。
过去的十天里,我阅读了所有类似的问题,并尝试了从反编译/编辑/重新编译Java代码到从Unity本身进行操作,但没有成功。
下面是我编写的最终代码以及我得到的错误。
我的
我有两个插件。每个插件单独使用时都很好,但当我想要同时使用它们时,我无法在它们之间切换活动。
过去的十天里,我阅读了所有类似的问题,并尝试了从反编译/编辑/重新编译Java代码到从Unity本身进行操作,但没有成功。
下面是我编写的最终代码以及我得到的错误。
我的
AndroidManifest.xml
文件: ...
<activity
android:name="com.Company.Game.RRAndroidPluginActivity"
android:label="My Game">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.codiwans.iab.IAB"
android:screenOrientation="landscape"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:label="My Game IAB" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
...
以下是Unity代码(使用C#语言):
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject pm = jo.Call<AndroidJavaObject>("getPackageManager");
AndroidJavaObject intent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage",
"com.codiwans.iab.IAB");
jo.Call("startActivity", intent);
下面是我得到的错误:
JNI: Unable to find method id for 'getClass'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)
JNI: Unable to find method id for 'getName'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)
JNI: Unable to find method id for 'getName'
Filename: ./Runtime/ExportGenerated/AndroidManaged/UnityEngineDebug.cpp Line: 54)
Caused by: java.lang.NoClassDefFoundError: com/unity3d/player/UnityPlayer$12
at com.unity3d.player.UnityPlayer.setScreenSize(Unknown Source)
at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
at com.unity3d.player.UnityPlayer.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1462)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1216)
Caused by: java.lang.NullPointerException
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382)
at android.app.Activity.startActivityForResult(Activity.java:3190)
at android.app.Activity.startActivity(Activity.java:3297)
... 4 more
这两个活动都很重要,其中一个是启动器。
我可以成功地调用这两个活动的方法。
然而,我无法切换到非启动器的活动,出现了指定的错误(无法找到“getClass”的id)。
我感觉离成功很近,但又似乎很遥远。任何帮助都将不胜感激。我已经快疯了!
谢谢。