从通知打开应用程序
Opening application from notification
假设我们有 Activity 显示有趣的图片并将其命名为 FunnyActivity。这个 Activity 可以从 MainActivity 启动,它是应用程序中的基础 Activity,点击按钮后。我们有时也想推送一些通知,当用户点击通知时,这个 FunnyActivity 应该被启动。所以我们添加这部分代码:
Intent notificationIntent = new Intent(this, FunnyActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), notificationIntent, 0);
并且此 PendingIntent 正在通知生成器中使用
setContentIntent(intent)
当然,FunnyActivity 启动得很漂亮,但我们希望在用户单击 FunnyActivity 上的后退按钮时打开 MainActivity。
我们怎样才能做到这一点?请记住,当用户返回 MainActivity 时,他可以通过按钮再次打开 FunnyActivity。
试试这个:
// Intent for the activity to open when user selects the notification
Intent detailsIntent = new Intent(this, DetailsActivity.class);
// Use TaskStackBuilder to build the back stack and get the PendingIntent
PendingIntent pendingIntent =
TaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(upIntent)
.addNextIntent(detailsIntent);
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(pendingIntent);
你可以试试这个:
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
Intent resultIntent = new Intent(this, FunnyActivity.class);
// Adds the back stack
stackBuilder.addParentStack(MainActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(resultIntent);
Intent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)/*.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))*/
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(msg)
.setContentIntent(resultPendingIntent)
.setAutoCancel(true);
这就是您解决问题的方法。希望对你有帮助
假设我们有 Activity 显示有趣的图片并将其命名为 FunnyActivity。这个 Activity 可以从 MainActivity 启动,它是应用程序中的基础 Activity,点击按钮后。我们有时也想推送一些通知,当用户点击通知时,这个 FunnyActivity 应该被启动。所以我们添加这部分代码:
Intent notificationIntent = new Intent(this, FunnyActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent intent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), notificationIntent, 0);
并且此 PendingIntent 正在通知生成器中使用
setContentIntent(intent)
当然,FunnyActivity 启动得很漂亮,但我们希望在用户单击 FunnyActivity 上的后退按钮时打开 MainActivity。
我们怎样才能做到这一点?请记住,当用户返回 MainActivity 时,他可以通过按钮再次打开 FunnyActivity。
试试这个:
// Intent for the activity to open when user selects the notification
Intent detailsIntent = new Intent(this, DetailsActivity.class);
// Use TaskStackBuilder to build the back stack and get the PendingIntent
PendingIntent pendingIntent =
TaskStackBuilder.create(this)
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(upIntent)
.addNextIntent(detailsIntent);
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(pendingIntent);
你可以试试这个:
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
Intent resultIntent = new Intent(this, FunnyActivity.class);
// Adds the back stack
stackBuilder.addParentStack(MainActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(resultIntent);
Intent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)/*.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher))*/
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(msg)
.setContentIntent(resultPendingIntent)
.setAutoCancel(true);
这就是您解决问题的方法。希望对你有帮助