使用GCMBaseIntentService的Android推送通知

时间:2012-12-31 11:37:12

标签: android user-interface notifications push google-cloud-messaging

我想从onMessage中更新UI。

e.g。使用更新进度条,怎么做?

2 个答案:

答案 0 :(得分:0)

看看GCM sample做事情的方式。它使用以下方法与主活动进行通信并更新GUI:

static void displayMessage(Context context, String message) {
    Intent intent = new Intent(DISPLAY_MESSAGE_ACTION);
    intent.putExtra(EXTRA_MESSAGE, message);
    context.sendBroadcast(intent);
}

然后使用BroadcastReceiver捕获主Activity中的意图:

private final BroadcastReceiver mHandleMessageReceiver =
        new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String newMessage = intent.getExtras().getString(EXTRA_MESSAGE);
        mDisplay.append(newMessage + "\n");
    }
};

因此,您可以使用类似的方法与主要活动进行通信以更新GUI。

答案 1 :(得分:0)

有很好的答案可以搞清楚,我也想让你使用这些代码。你可以通过在活动中将它放在onResume上来获得意图。

将这些代码放在GCMBaseIntentService的onMessage

if(isRunningActivity()){
        Intent pushReceivedIntent = new Intent(ACTION_PUSH);
        pushReceivedIntent.putExtras(intent.getExtras());
        context.sendBroadcast(pushReceivedIntent);
        return;
}

然后您可以使用接收器

来接收该意图
    //register as BroadcastReceiver for Push Action
    IntentFilter filter = new IntentFilter();
    filter.addAction(NotificationProcessor.ACTION_PUSH);
    mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // put here codes what you want
        }
    };
    registerReceiver(mReceiver, filter);

如果您有任何问题,请发表评论。希望这会对你有所帮助