有两个应用程序:Caller,Callee
案例1>
当我从主屏幕启动Callee应用程序时,我可以从INTENT获得一个动作(" android.intent.action.MAIN")。
当Callee运行时,我再次从Caller应用程序启动Callee应用程序(" andoird.intent.action.test")。然后我得到了动作(" android.intent.action.MAIN")。不行动(" andoird.intent.action.test")。
我如何获得动作(" andoird.intent.action.test")?
案例2>
当我使用动作启动Callee应用程序时(&#34; andoird.intent.action.test&#34;),我得到了动作(&#34; andoird.intent.action.test&#34;)。< / p>
当Callee正在运行时,我从主屏幕启动Callee应用程序。然后我得到了动作(&#34; andoird.intent.action.test&#34;)。不行动(&#34; android.intent.action.Main&#34;)。
我如何获得动作(&#34; android.intent.action.Main&#34;)?
我错过了什么才能采取适当的行动?
以下是来电代码。
public class CallerActivity extends AppCompatActivity {
public static final String ACTION_TEST = "android.intent.action.test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button test = (Button) findViewById(R.id.gotoSetting);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = getPackageManager().getLaunchIntentForPackage(PACKAGE);
intent.setAction(ACTION_TEST);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
});
}
}
以下是Callee代码。
public class CalleeActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("test", "onCreate()");
Log.e("test", getIntent().getAction());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("test", "onNewIntent()");
Log.e("test", getIntent().getAction());
}
}
这是Callee的AndroidManifest。
<activity
android:name=".CalleeActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.test"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
请帮忙。
答案 0 :(得分:0)
替换此代码:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("test", "onNewIntent()");
Log.e("test", getIntent().getAction());// getIntent() will return old intent
}
与
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("test", "onNewIntent()");
Log.e("test", intent.getAction()); //use new intent
}