如何从Unity调用onNewIntent()

时间:2015-04-08 11:25:53

标签: android unity3d

我正在开发团结android项目。 我已经像这样从

中调用了android方法
AndroidJavaObject aObj = new AndroidJavaObject("com.mypackage.UnityBridge",param1,param2);
aObj.Call("callme");

在Android端

public class UnityBridge{

public UnityBridge(final String param1, final int param2) {

        activity = UnityPlayer.currentActivity;
        this.param1= param1;
        this.param2= param2;        
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {                         
                // INITIALIZATION OF ANDROID CLASS CONSTRUCTOR HERE             
            }
        });
    }   


public void callme() {
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {             
                if(obj!= null)
                {               
                    // ANDROID METHOD CALL HERE
                }            
            }
        });
    }

这很有效。

如果我想调用特定于Activity的方法,例如 onPause() onResume(),那么有一个统一的方法可以这样做。

void OnApplicationPause(bool pauseStatus) {
// HERE I CAN CALL activity specific **onPause()** and **onResume()** based on pauseStatus
}

是否有任何统一的内容,我可以通过它来调用Android的 onNewIntent(Intent i)。如果没有,那么如何调用 onNewIntent()

请帮忙解决此问题。

2 个答案:

答案 0 :(得分:1)

我写了一篇文章,如何在不重写Unity活动的情况下解决这个问题(关于onActivityResult,但原理是相同的):https://medium.com/@tarasleskiv/unity-android-plugins-and-onactivityresult-callback-abef4b6bbc87#.6d7sl8z81

基本上你创建一个自定义的空活动并启动它只是为了接收这些回调并在此之后立即完成它。

还请查看此帖子,了解如何为onNewIntent回调创建活动:https://blog.getsocial.im/android-unity-app-and-the-intent-issue/

以下是您必须创建的中间活动的示例代码:

public class MyDeepLinkingActivity extends Activity
{
    private static String TAG = "GetSocial GetSocialDeepLinkingActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        Log.v(TAG, "Forward the intent");

        // Do with intent what you need to

        Log.v(TAG, "Returning to main activity");
        //start main activity
        Intent newIntent = new Intent(this, getMainActivityClass());
        this.startActivity(newIntent);
        finish();
    }

    private Class<?> getMainActivityClass() {
        String packageName = this.getPackageName();
        Intent launchIntent = this.getPackageManager().getLaunchIntentForPackage(packageName);
        try {
            return Class.forName(launchIntent.getComponent().getClassName());
        } catch (Exception e) {
            Log.e(TAG, "Unable to find Main Activity Class");
            return null;
        }
    }
}

答案 1 :(得分:0)

看起来没有建立在Unity中获取onNewIntent回调的方法。但是我可以建议从统一导出谷歌android项目并在主要的统一活动中覆盖这个方法

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    //some code
}

或者您可以使用自己的活动创建Android插件,这可以扩展统一活动,但请记住,如果您这样做,某些插件可能会停止工作。