我有2个应用程序:应用程序A和应用程序B。在应用程序A中,我可以单击一些将启动意图的应用程序,然后打开应用程序B。此意图将使用户进入不是该应用程序主要活动的活动。应用B,我们称之为ViewFormsActivity。这是在App A中点击的代码
Intent intent = new Intent("forms.ViewFormsActivity");
intent.putExtra("formID", formID);
intent.putExtra("siteID", siteID);
intent.putExtra("tab", 0);
intent.putExtra("prePopulatedURL", modifiedURL);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e){
e.printStackTrace();
}
这是App B的清单
<activity
android:name=".ViewFormsActivity"
android:label="@string/title_activity_view_forms"
android:exported="true"
android:parentActivityName=".MainActivity"
android:theme="@style/AppThemeNoTitleBar">
<intent-filter>
<action android:name="forms.ViewFormsActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
此代码在尚未打开App B时有效。但是,如果我将App B留在主要活动上,然后切换到App A,然后执行单击;用户将被带到应用程序B的主活动页面。即使我在意图中指定了该功能,它也似乎并未将用户带到ViewFormsActivity。有谁知道原因以及如何解决?
答案 0 :(得分:0)
将intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
添加为标志,并将android:launchMode="singleTop"
添加到接收活动清单中。
答案 1 :(得分:0)
如果要从另一个应用程序打开活动,则还必须包括ComponentName。
Intent intent = new Intent();
intent.setComponentName(new ComponentName(PACKAGE_NAME, com.something.something.forms.ViewFormsActivity.class));
intent.putExtra("formID", formID);
intent.putExtra("siteID", siteID);
intent.putExtra("tab", 0);
intent.putExtra("prePopulatedURL", modifiedURL);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (ActivityNotFoundException e){
e.printStackTrace();
}
答案 2 :(得分:0)
我通过将flag_activity_clear_top添加到App A的意图中解决了这个问题。
Intent intent = new Intent("forms.ViewFormsActivity");
intent.putExtra("formID", formID);
intent.putExtra("siteID", siteID);
intent.putExtra("tab", 0);
intent.putExtra("prePopulatedURL", modifiedURL);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
}
catch (ActivityNotFoundException e){
e.printStackTrace();
}