我认为App Manager在安装后以错误的方式运行我的应用程序。它在其任务中运行我的应用程序。当我按HOME并按应用程序图标时,我用我的应用程序运行第二个任务。
我测试了它。我做了两个应用程序App1,App2。 App2有两个活动A和B. App1以最简单的方式运行App2。
Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1"));
测试1.运行App1。 App1运行App2活动A.意图A运行活动B.按Home。按App2图标。您可以看到App2活动A.(错误。我们必须使用App2的任务)
我改变了启动App2的代码。
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName("org.app2.test", "org.app2.test.Screen1"));
测试2.运行App1。 App1运行App2活动A.意图A运行活动B.按Home。按App2图标。您可以看到App2活动B.(确定)
如何更改App2清单并强制App2始终在自己的任务中运行?
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Screen1"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Screen2">
<intent-filter>
<action android:name="org.app2.test.screen2" />
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
</application>
答案 0 :(得分:1)
我检测首次运行应用程序的情况并重新启动它。
if (first_run) {
Log.w(TAG, AppHelper.FIRST_RUN);
PendingIntent intent = PendingIntent.getActivity(this.getBaseContext(), 0, (new Intent(getIntent())).addCategory(Intent.CATEGORY_LAUNCHER), Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager mgr = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, intent);
System.runFinalizersOnExit(true);
System.exit(2);
return;
}