【问题标题】:how to stay in the application after click on the notification点击通知后如何留在应用程序中
【发布时间】:2016-08-31 12:25:19
【问题描述】:

在我的 android 应用程序中,我使用一项服务每 10 秒检查一次 mysql 数据库中是否有新消息,并给我一个通知,所以当我点击通知时,消息活动开始,但是当我单击后退按钮我退出应用程序而不是返回主屏幕

//show notification
public void ShowNotification(){
    NotificationCompat.Builder nbuild= new NotificationCompat.Builder(this)
            .setContentTitle("Message :"+username)
            .setContentText(messagetext)
            .setSubText(messageadddate)
            .setLargeIcon(bitmap)
            .setAutoCancel(true)
            .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
            .setSmallIcon(R.drawable.ic_stat_notification_red);
    Intent showMessages = new Intent(this, ShowMessages.class);
    TaskStackBuilder builder = TaskStackBuilder.create(this);
    builder.addParentStack(HomeScreen.class);
    builder.addNextIntent(showMessages);
    PendingIntent contentIntent = builder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
    nbuild.setContentIntent(contentIntent);
    MessagesNotifManager.notify((int) System.currentTimeMillis(), nbuild.build());
}

【问题讨论】:

标签: android android-intent service notifications


【解决方案1】:

这是正常的,默认情况下后退按钮导航到后退堆栈并且您的主页活动不在后退堆栈中。

这是一个指南:https://developer.android.com/guide/components/tasks-and-back-stack.html

如果要强制home Activity打开,那么在activity中放:

@Override
public void onBackPressed() {

    // start the intent(your home screen) you want, and finish() this. 
  super.onBackPressed(); // remove this.  
}

【讨论】:

  • 如果您查看 OP 的代码,他正在使用 TaskStackBuilder 构建一个后退堆栈,以便他的 HomeScreen 将在 ShowMessages 完成时显示。
【解决方案2】:

我认为 HomeScreen 您在这种情况下所说的是您的应用程序主屏幕(让我们调用 MainActivity)。好吧..从逻辑上讲,只有您知道 MainActivity 正在控制所有其他活动.. Android 不知道您的活动流程。

由于您仅从通知栏中调用了通知活动...

 Intent showMessages = new Intent(this, ShowMessages.class);

android 不会知道它必须回到 MainActivity

但是,我会使用这种解决方法...可能不是最好的...但它会达到目的...

@Override
public void onBackPressed() {
    Intent intentx;
    intentx = new Intent(thisContext, DashboardMainActivity.class);
    intentx.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    thisContext.startActivity(intentx);
    finish();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多