1.manifest中注册
在Activity中注册,如下:
注:此为必须存在的
<intent-filter> <action android:name="action.action.action1"/> <action android:name="action.action.action2"/> <action android:name="action.action.action3"/> <action android:name="action.action.action4"/> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
2.调用
Intent intent = new Intent(action); context.startActivity(intent);
也可以使用命令adb shell am start -a action.action.action1测试
3.接收
3.1 Android获取action
Intent receiverIntent = getIntent(); String action =receiverIntent.getAction();
或者
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); intentResult=intent.getStringExtra(ReceiverTag); if(intentResult==null || intentResult == "") { intentResult=defaultIntentResult; } Log.d(Tag,"Intent result:" intentResult); }
3.2 Unity获取action
3.2.1 获取Activity
public static AndroidJavaObject GetActivity() { AndroidJavaClass jc = new AndroidJavaClass(unityPlayerClass); if (jc == null) { Debug.LogErrorFormat("Failed to get Unity Player class, {0}", unityPlayerClass); return null; } AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity"); if (activity == null) { Debug.LogError("Failed to obtain Android Activity from Unity Player class."); return null; } return activity; }
3.2.2 获取intent
private AndroidJavaObject GetIntent() { AndroidJavaObject activity = GetActivity(); if (activity != null) { return activity.Call<AndroidJavaObject>("getIntent"); } return null; }
3.2.3 获取action
public string GetIntentMessage() { string result = ""; AndroidJavaObject intent = GetIntent(); if (intent == null) { Debug.Log("Get null intent"); return result; } try { result = intent.Call<string>("getAction"); Debug.Log("Get action result:" result); } catch(Exception ex) { Debug.Log("Exception while getting action:" ex.ToString()); } return result; }