5

GCM通知の実装があります。クライアント アプリケーションは、フォアグラウンド、バックグラウンド、または強制終了のいずれの状態であっても、通知を受け取ることがわかっています。私が知りたいのは、アプリケーションが強制終了された状態のときに、受信した通知でアプリケーションを起動するにはどうすればよいですか?

4

2 に答える 2

5

メッセージ受信側で、次のことを行います。

final Intent notificationIntent = new Intent(context, YourActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);

ここで、YourActivity.class を entry アクティビティに置き換えます。これは私にとってはうまくいきました。

于 2013-01-22T12:40:32.237 に答える
2

NotificationManager を使用してアクティビティを開始できます。

GCMのGCMBaseIntentServiceクラスを拡張するクラスでオーバーライドされたメソッドであるonMessage()メソッド内で以下のコードを使用してみてください。

int icon = R.drawable.your_app_icon;
        long when = System.currentTimeMillis();
        NotificationManager notificationManager = (NotificationManager) context
                .getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(icon, message, when);
        String title = context.getString(R.string.app_name);

        Intent notificationIntent = new Intent(context, YOUR_ACTIVITY.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        // notificationIntent.putExtra("PostName", vPostText);
        // Log.i(TAG, "Sent Postid " + postid);

        // Util util = (Util) context.getApplicationContext();
        // util.setPostID(postid);
        // util.setNotify(true);
        // util.setUserNAME(vPortCode);
        // util.setPostNAME(vPostText);
        // util.setmEDIA(vMedia);
        // util.setmEDIATHHUMB(vMediaThumb);
        // util.setmEDIATYPE(vMediaType);
        // util.setAirportName(vAirportName);

        notificationIntent.putExtra("Set_image", true);
        notificationIntent.putExtra("Notify", true);

        // set intent so it does not start a new activity
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        // | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        PendingIntent intent = PendingIntent.getActivity(context,
                (int) System.nanoTime(), notificationIntent, 0);

        notification.setLatestEventInfo(context, title, message, intent);
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        notificationManager.notify((int) System.nanoTime(), notification);
于 2012-11-28T09:46:23.843 に答える