【问题标题】:Fired notification from Broadcastreceiver is closing app when backpressed来自 Broadcastreceiver 的触发通知在被按下时正在关闭应用程序
【发布时间】:2017-12-24 11:38:09
【问题描述】:

我有一个应用程序,它基本上包含三个 3 类,即 1-MainActivity、2-DetailActivity 和 3-Broadcast。甚至应用程序已关闭广播接收器正在工作,如果它收到一些东西,它会触发通知。当我按下通知时,它正在打开详细信息类。直到这一点没有问题,它工作完美。但如果我在 DetailActivity 中按回。它指向我的手机主页。但应用程序应该将我引导到主课。在应用程序将我引导到主页后,如果我从后台运行的应用程序返回应用程序,它将启动主类我正在使用的文档代码是:

<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());

【问题讨论】:

  • 覆盖后退按钮按下方法以获得您想要的行为
  • 如果这是解决方案,我需要在 manifest 和 java 中添加 parentActivityName 等。

标签: android notifications broadcastreceiver


【解决方案1】:

其实我在尝试和错误后找到了答案,

PendingIntent.FLAG_UPDATE_CURRENT

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

 PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(
                        0,
                        PendingIntent.FLAG_IMMUTABLE
                );

【讨论】:

    【解决方案2】:

    正如@MeknessiHamida 所说..您应该覆盖OnBackPressed 方法并启动一个意图来启动您的主要活动。

    【讨论】:

      【解决方案3】:

      您只需要在 detailsActivity 中覆盖它(根据您的问题):制定一个将您引导至主要活动的意图:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 1970-01-01
        • 2019-09-29
        • 2019-04-10
        • 1970-01-01
        相关资源
        最近更新 更多