在Android Studio3.4 报错内容:
Can't create handler inside thread that has not called Looper.prepareUnity: AndroidJavaException: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJNISafe.CallVoidMethod (IntPtr obj, IntPtr methodID, UnityEngine.jvalue[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject._Call (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at UnityEngine.AndroidJavaObject.Call (System.String methodName, System.Object[] args) [0x00000] in <filename unknown>:0
at AndroidSdkImp.Login () [0x00000] in <filename unknown>:0
at XEnterScript.OnLoginFastGame () [0x00000] in <filename unknown>:0
at EventDelegate.Execute () [0x00000] in <filename unknown>:0
at EventDelegate.Execute (System.Collections.Generic.List`1 list) [0x00000] in <filename unknown>:0
at UIButton.OnClick () [0x00000] in <filename unknown>:0
UnityEngine.GameObject:SendMessage(String, Object, SendMessageOpt
例:
错误原因:
直接使用Unity调用第三方接口了
public void Login() {
HuyaBerry.instance().login(MainActivity.this);
}
解决方式:
创建一个UI线程调用
public void Login() {
this.runOnUiThread(new Runnable() {
public void run() {
HuyaBerry.instance().login(MainActivity.this);
}
});
}
//TODO C#中被using(){}包裹的变量不能在using外使用。否则会闪退。
错误例子:
AndroidJavaObject CurrentActivity;
using (var JavaClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
CurrentActivity = JavaClass.GetStatic<AndroidJavaObject>("currentActivity");
if (CurrentActivity != null)
{
CurrentActivity.Call("Test1", "77777");
}
}
CurrentActivity.Call("Test2");//不要在 using 使用
CurrentActivity.CallStatic("Test3");

博客主要讲述在Android Studio 3.4中使用Unity调用第三方接口报错的问题。错误原因是直接使用Unity调用第三方接口,解决方式是创建一个UI线程调用。同时还提到C#中被using(){}包裹的变量不能在using外使用,否则会闪退。

6299

被折叠的 条评论
为什么被折叠?



