活动结束后通知消失

7

我有一个名为A的活动,它从一个broadcast receiver启动。活动A触发了一个通知,但当活动销毁(完成)时,通知会自动消失。但我希望保留此通知,直到用户单击或手动清除通知。

如何从广播接收器启动活动

Intent i = new Intent(context,A.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
i.putExtras(intent.getExtras());
context.startActivity(i);

通知

Intent notificationIntent = new Intent();
notificationIntent.setClass(context,B.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.setFlags( Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(context)
        .setSmallIcon(R.drawable.notification_small)
        .setContentTitle(status)
        .setTicker(status)
        .setAutoCancel(false)
        .setContentText(message)
        .setDefaults(Notification.DEFAULT_SOUND)
        .setLargeIcon(
                Bitmap.createScaledBitmap(icon, 128, 128, false))
        .setContentIntent(pendingIntent)
        .build();

清单选项

<activity android:name="com.example.activity.A"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"/>

注意:我也尝试过singleInstance,但没有成功。

编辑(已修复)

我犯了一个傻瓜错误,在onDestroy()函数中调用了clearAll()而不是取消特定的通知。


1
你是否在某个地方使用 mNotificationManager.cancel(NOTIFICATION_ID); 取消了通知? - Fahim
我在评论中提到,你正在清除通知。 - Fahim
2个回答

3
我认为您在Activity销毁时取消了应用程序中的所有通知。

1

完全删除autocancel()并尝试以下代码:

    public static final int NOTIFICATION_ID = 1;
    private NotificationManager mNotificationManager;
    NotificationCompat.Builder builder;


    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);   
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,new Intent(this, MenuActivity.class), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.icon).setContentTitle(" ").
                                            setStyle(new NotificationCompat.BigTextStyle().bigText(bundle.get("").toString())).
                                            setContentText(bundle.get("").toString());
    mBuilder.setContentIntent(contentIntent);

    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

不起作用。我完全复制了你的代码。但情况仍然是一样的。通知出现,但在活动完成时被清除。 - shantanu
1
我已经测试过了,它能正常工作。你确定在某个地方没有取消通知吗? - Heshan Sandeepa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接