Android GCM打开带有数据的应用

时间:2014-11-28 11:54:45

标签: android android-intent android-activity google-cloud-messaging

我想在用户按下推送通知时打开应用程序时打开另一个活动。

此活动需要在主要活动之上。因此,当用户按下通知时,堆栈应为:

活动A - >活动B.

现在我认为他们有两种情况:

  • 该应用已在运行(因此主要活动已经展示)
  • 该应用未运行。 (主要活动没有提出)

所以我的问题是:我应该如何打开应用程序,显示一个新的活动,主要活动在其堆栈中。

以下代码仅在应用程序已经运行时才有效(因此主要活动已经在堆栈中)。

    Intent notificationIntent = new Intent(this, ExtraActivity.class);
    notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    notificationIntent.setAction(Intent.ACTION_MAIN);

    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, notificationIntent, 0);

    String appName = getResources().getString(R.string.app_name);
    int icon = R.drawable.ic_launcher;

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
    .setSmallIcon(icon)
    .setContentTitle(appName)
    .setStyle(new NotificationCompat.BigTextStyle()
    .bigText(message))
    .setContentText(message);

    mBuilder.setContentIntent(pendingIntent);

    mNotificationManager.notify(uniqueId, mBuilder.build());

1 个答案:

答案 0 :(得分:0)

试试这个

Intent intent;
manager = getPackageManager();
try {
  intent = manager.getLaunchIntentForPackage(getApplicationContext().getPackageName());
  if (intent == null)
    throw new PackageManager.NameNotFoundException();
  intent.addCategory(Intent.CATEGORY_LAUNCHER);
  intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
  finish();
  startActivity(intent);
}
catch (Exception e) {
}