2015-04-01 104 views
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,但没有运气。

编辑(固定)

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

+1

您是否使用mNotificationManager.cancel(NOTIFICATION_ID)取消通知? – Fahim 2015-04-01 07:57:46

+0

看到我在我的评论中提到您正在清除通知 – Fahim 2015-04-01 09:02:11

回答

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

不起作用。我完全复制你的代码。但情况是一样的。当活动完成时,通知显示但是很清楚 – shantanu 2015-04-01 08:18:55

+1

我测试了它并开始工作,您是否验证过您没有取消某处的通知? – 2015-04-01 08:31:52

+0

你可以发布整个代码吗? – 2015-04-01 08:40:10

3

我认为你是在取消您的应用程序的所有通知当活动被销毁。