面白い画像を表示し、FunnyActivityという名前のアクティビティがあるとします。このアクティビティは、MainActivityから起動することができます。MainActivityは、ボタンをクリックした後、アウトアプリケーションの基本アクティビティです。私たちはまた、いくつかの通知をプッシュしたいと思います。ユーザーが通知をクリックすると、この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を通知ビルダーでコースFunnyActivityの
setContentIntent(intent)
を使用しているが、美しく起動されますが、我々は、ユーザーが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);
これはあなたの問題を解決を図ることができる方法である:Create back stack when starting the activity
標準的な解決策がわかりませんが、これはハックのように聞こえるかもしれませんが、FunnyActivityのonBackPressed()をオーバーライドし、そこに適切なフラグを付けてMainActivityを起動してください。 – Shaishav