当我从这样的接收器使用startActivity时:
public void onReceive(final Context context, final Intent intent) {
Intent i = new Intent();
i.setClass(context, NewClass.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
i.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
context.startActivity(i);
}
某些设备中的(例如Galaxy S2 android:4.0.4) - 它也在MAIN活动的背景中启动(使用action.MAIN和category.LAUNCHER)。
- 修改 -
AndroidManifest:
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:debuggable="true">
<receiver android:name="com.my.app.MyBroadcastReceiver" android:enabled="true">
<intent-filter android:priority="99999">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<activity android:name="com.my.app.Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.my.app.NewClass">
<intent-filter>
<action android:name="android.intent.action.NEWSCLASS" />
</intent-filter>
</activity>
</application>
为什么?
答案 0 :(得分:0)
这是因为在AndroidManifest.xml中,活动指定了两件事:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
答案 1 :(得分:0)
发布您的清单文件可以提供帮助
在清单中删除NewClass的intent过滤器。 更新:意图过滤器不是必需的,因为您制定了明确的意图。 Intent-filter对隐式意图很有用。
并尝试删除在startActivity之前设置的所有标志。 更新:看看intent.setAction