GCMIntentService的意图附加项未传递

3
我编写了 GCMIntentService,但是调用的 Activity 无法获取 Extras。
@Override
protected void onMessage(Context context, Intent intent) {

    Intent resultIntent = new Intent(this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
            Intent.FLAG_ACTIVITY_SINGLE_TOP);
        resultIntent.putExtra("PushType", "test"); // Put String Extra.

    PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}

以下是名为MainActivity的代码:

@Override
protected void onResume() {
    super.onResume();

    final Intent receivedIntent = getIntent();

    if (receivedIntent != null && receivedIntent.hasExtra("PushType")) {
            // Breakpoint at here. but no Extras are given.
        }       
    }
}

我在receivedIntent处设置了断点,其中的mExtras显示为空。

此外,我的调用MainActivity清单编码如下。

        <activity
        android:name=".MainActivity"
        android:theme="@android:style/Theme.NoTitleBar"
        android:configChanges="keyboardHidden|orientation|screenSize"
        android:label="@string/app_name">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>

我将调用意图更改为另一个Activity,并成功加载了Extras。替代活动的清单(成功包含Extras)如下所示。

        <activity
        android:name=".NotificationActivity"
        android:parentActivityName=".MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity"/>
    </activity>

我做错了什么?
1个回答

2

看起来您需要覆盖onNewIntent(Intent intent)方法,并在其中调用setIntent(intent)。然后onResume()将接收到新的意图。请参见onNewIntent()获取更多细节。


我想强调在onMessage()中使用'PendingIntent.FLAG_UPDATE_CURRENT'的重要性,因为如果没有它,现有的Intent将传递给onNewIntent(),这会让新手感到困惑一段时间。 - markdwhite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接