来自Broadcastreceiver的触发通知正在关闭时关闭应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自Broadcastreceiver的触发通知正在关闭时关闭应用程序相关的知识,希望对你有一定的参考价值。

好吧,我有一个应用程序它基本上有三个3类,1-MainActivity,2- DetailActivity和3-Broadcast。甚至应用程序已关闭broadcastreceiver正在工作,如果它收到的东西,它会触发通知。当我按下通知时它正在打开Detail类。直到这一点没有问题它是完美的。但如果我按回DetailActivity。它指向我的手机主页。但app应该指引我到Main class。如果我从后台运行的应用程序返回应用程序,应用程序将我引导到主页后,它将启动主要类我使用的文档代码是:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
<activity
    android:name=".DetailActivity"
    android:parentActivityName=".MainActivity">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainActivity"/>
</activity>

int id = 1;
...
Intent resultIntent = new Intent(this, DetailActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack
stackBuilder.addParentStack(DetailActivity.class);
// Adds the Intent to the top of the stack
stackBuilder.addNextIntent(resultIntent);
// Gets a PendingIntent containing the entire back stack
PendingIntent resultPendingIntent =
        stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
...
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(id, builder.build());
答案

实际上我经过一些尝试和错误后找到了答案,

PendingIntent.FLAG_UPDATE_CURRENT

更改此行后,它工作正常,而不是“.this”我使用getApplicationContext();对于上下文

 PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(
                        0,
                        PendingIntent.FLAG_IMMUTABLE
                );
另一答案

正如@MeknessiHamida所提到的......你应该覆盖OnBackPressed方法并开始意图启动你的主要活动。

另一答案

你只需要在detailsActivity中覆盖它(根据你的问题):制作一个指向主活动的意图:

@Override public void onBackPressed() { //Include the code here return; }

以上是关于来自Broadcastreceiver的触发通知正在关闭时关闭应用程序的主要内容,如果未能解决你的问题,请参考以下文章

GCM BroadcastReceiver 仅在应用程序正在运行或在后台运行时触发

Android:BroadcastReceiver不会收听BOOT_COMPLETED

AlarmManager 不调用 BroadcastReceiver

处理来自后台任务的 toast 通知动作触发器 - UWP

收到来自 Firebase 的通知时触发警报

BroadcastReceiver peekService() 返回 null