2

当我从这样的接收器使用 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>

这是为什么?

4

2 回答 2

0

发布您的清单文件可以提供帮助

在清单中删除 NewClass 的意图过滤器。更新:intent-filter 不是必需的,因为您制定了明确的意图。Intent-filter 对于隐式意图很有用。

并尝试删除您在 startActivity 之前设置的所有标志。更新:看看intent.setAction

于 2013-02-15T12:29:40.567 回答
0

发生这种情况是因为在您的 AndroidManifest.xml 中,活动指定了两件事:

              <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
于 2013-02-15T12:25:40.110 回答