所以我有一个打开活动的通知:
public void showNotification(View v) {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.icon);
builder.setContentTitle("title text");
builder.setContentText("text");
builder.setOngoing(true);
Intent intent = new Intent(this, SecondClass.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(SecondClass.class);
stackBuilder.addNextIntent(intent);
final PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);
final NotificationManager NM = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NM.notify(0, builder.build());
我做的活动是一个简单的对话框风格的活动。当我从通知抽屉中打开Activity时,在任何其他应用程序之上,如Facebook,WhatsApp,Chrome浏览器等,Activity按预期打开。问题是当我试图关闭它,并返回到以前的应用程序。
当我点击后退按钮,关闭我的对话框风格的活动,我直接回到手机的主屏幕,而不是回到以前的应用程序。为什么?为什么?
当我点击我在对话框中创建的“关闭”按钮时:
close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SecondClass.this.finish();
}
});
同样的事情发生了:该活动已完成,但我要返回到主屏幕,而不是上一个应用程序.为什么?2?
- 注意:即使在我完成活动后,以前的应用程序仍在后台工作。
在搜索解决方案时,我发现了此链接:How to open dialog styled activity from notification without previous activity closing?
但没有给出解决方案。
P.S.我是Android开发的新手,如果可能的话,请简单点:)
3条答案
按热度按时间9q78igpj1#
你看起来像遇到同样的问题常规活动&特殊活动通知'行动,任何我的答案在这里:通知按钮后返回原始活动
zwghvu4y2#
经过长时间的搜索,我在这个链接找到了解决方案:Go back to previous screen on backbutton pressed after responding to notification
我的代码中有两个问题。首先,正如在链接中所解释的,我没有使用
.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
。第二,根据:http://www.tutorialspoint.com/android/android_notifications.htm我不应该使用堆栈构建器。堆栈构建器将包含已启动Activity的人工回栈。这确保了从Activity向后导航会引出应用程序到主屏幕。这不是我想要的结果。
zf2sa74q3#
我在使用堆栈构建器时遇到了同样的问题,在我的情况下,它被修复了:
更换
到
PendingIntent.FLAG_UPDATE_CURRENT or FLAG_MUTABLE