通知意图 - 如何在不重置的情况下恢复通知中的 activity?
Notification Intent - How to resume the activity in a notification without resetting?
我正在制作一个计时器应用程序。这样当用户点击开始按钮时,通知就会出现,而当用户点击通知时,计时器应该会恢复,而不是显示 new activity 从第一个开始。
我试过了TaskStackbuilder
问题依旧
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getApplicationContext());
stackBuilder.addNextIntentWithParentStack(resultIntent);
PendingIntent res = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
Notification not = new NotificationCompat.Builder(this,CHANNEL_ID)
.setSmallIcon(R.drawable.ic_timer)
.setContentTitle("Productivity Timer")
.setContentText("Your Timer is Running")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
.setOngoing(true)
.setContentIntent(res)
.build();
notificationManager.notify(1,not);
我对你的代码做了一些修改。请查看相同的内容,如果您仍有任何疑问,请告诉我。
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification not = new NotificationCompat.Builder(this,CHANNEL_ID)
.setSmallIcon(R.drawable.ic_timer)
.setContentTitle("Productivity Timer")
.setContentText("Your Timer is Running")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
.setOngoing(true)
.setContentIntent(pendingIntent)
.build();
notificationManager.notify(1,not);
谢谢。
我用这个来恢复activity
清单
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
您也可以在需要将 activity 置于最前面时使用它
private void bringAppFront() {
try {
Intent i = new Intent(this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
} catch (Throwable e) {
e.printStackTrace();
}
}
我正在制作一个计时器应用程序。这样当用户点击开始按钮时,通知就会出现,而当用户点击通知时,计时器应该会恢复,而不是显示 new activity 从第一个开始。
我试过了TaskStackbuilder
问题依旧
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(getApplicationContext());
stackBuilder.addNextIntentWithParentStack(resultIntent);
PendingIntent res = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
Notification not = new NotificationCompat.Builder(this,CHANNEL_ID)
.setSmallIcon(R.drawable.ic_timer)
.setContentTitle("Productivity Timer")
.setContentText("Your Timer is Running")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
.setOngoing(true)
.setContentIntent(res)
.build();
notificationManager.notify(1,not);
我对你的代码做了一些修改。请查看相同的内容,如果您仍有任何疑问,请告诉我。
Intent resultIntent = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification not = new NotificationCompat.Builder(this,CHANNEL_ID)
.setSmallIcon(R.drawable.ic_timer)
.setContentTitle("Productivity Timer")
.setContentText("Your Timer is Running")
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setCategory(NotificationCompat.CATEGORY_PROGRESS)
.setOngoing(true)
.setContentIntent(pendingIntent)
.build();
notificationManager.notify(1,not);
谢谢。
我用这个来恢复activity
清单
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
您也可以在需要将 activity 置于最前面时使用它
private void bringAppFront() {
try {
Intent i = new Intent(this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
} catch (Throwable e) {
e.printStackTrace();
}
}