在Android开发中,我通过示例代码实现了一个简单的通知,但在我的应用程序中,我不想重新创建新的意图和活动,我只想返回到我的上一个活动(这是一个mediaplayer UI)。如果我使用示例代码,它将通过以下方式创建一个新的活动
Intent resultIntent = new Intent(this, ResultActivity.class);
我评论了关于新意图的相关代码,并收到了通知,但不知道如何返回到我的上一次活动……
从长按Home键回到我的应用程序,触摸我的应用程序是OK的。我想要的就是这样的行为。
bleow是Android Development的示例代码,我注释新的intent部分。
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("My notification")
.setContentText("Hello World!");
/*Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ResultActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);*/
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(mId, mBuilder.build());
更新
我想我需要为活动设置意图和属性的标志。因此,对于我想要返回的活动,我设置
android:launchMode="singleInstance"
因为我不想要来自intent的新活动,我只想要我的最后一个活动,所以我添加了
Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
从文档中我了解到,使用Pendingintent.contentIntent必须包括FLAG_ACTIVITY_NEW_TASK标志,并且当使用此标志时,如果您正在启动的活动的任务已经在运行,则不会启动新的活动;相反,当前任务将简单地带到屏幕的前面,并显示其上一次所处的状态。所以我还补充说
Intent.FLAG_ACTIVITY_NEW_TASK
但在logCat中,我仍然看到,当我触摸返回活动的通知时,挂起的i仍然调用onCreate()函数,而不仅仅是显示仍然“活动”的最后一个活动。
发布于 2013-08-25 15:40:40
如果你想从后台调用Activity,尝试这样做:
Intent intent = new Intent(this, YourLauncherActivity.class);
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,
intent, 0);
mBuilder.setContentIntent(pendingIntent);
如果你点击通知,而在主屏幕上,最后显示的活动,你的应用程序将得到前台,而不是启动它的新。如果该活动被系统终止,您将获得一个新的活动。
发布于 2016-06-07 13:42:57
我使用了PendingIntent.getActivities而不是getActivity。这在我的项目中运行得很好。
Intent backIntent = new Intent(this, HomeActivity.class);
backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Intent notificationIntent = new Intent(this, NextActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivities(this, 1,
new Intent[] {backIntent, notificationIntent}, PendingIntent.FLAG_ONE_SHOT);
发布于 2018-01-25 21:18:26
对我来说,这是可行的:
新建意图(context( context,0,
(context,YOUR_MAIN.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |PendingIntent.getActivity ),PendingIntent.FLAG_ONE_SHOT)) FLAG_ONE_SHOT :不创建两次(关联Intent.FLAG_ACTIVITY_CLEAR_TOP |context)
https://stackoverflow.com/questions/18425108
复制相似问题