当我从这样的接收器使用 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)。
--编辑--
安卓清单:
<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>
这是为什么?