2015-04-01 17 views
7

Mam działalność o nazwie A, która rozpoczyna się od broadcast receiver. Aktywność A wywołała powiadomienie, ale znika automatycznie, gdy aktywność zostanie zniszczona (zakończ). Ale chcę zachować to powiadomienie, dopóki użytkownik nie kliknie lub ręcznie nie usunie powiadomienia.Powiadomienie znika po zakończeniu aktywności

Jak rozpocząć działalność z odbiornikiem transmisji

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

Powiadomienie

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

oczywistych opcji

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

Uwaga: Próbowałem też singleInstance ale bez powodzenia.

Edit (Fixed)

Zrobiłem głupi błąd. Zadzwoniłem do clearAll() zamiast anulować określone powiadomienie w funkcji onDestroy().

+1

czy anulować powiadomienie gdzieś za pomocą mNotificationManager.cancel (NOTIFICATION_ID) ;? – Fahim

+0

zobacz Wspomniałem, że w moim komentarzu, że czyścisz powiadomienie – Fahim

Odpowiedz

1

usuń autocancel() całkowicie i spróbować tego,

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

Nie działa. Dokładnie kopiuję twój kod. Ale sytuacja jest taka sama. Powiadomienie pojawia się, ale jasne, kiedy aktywność kończy się – shantanu

+1

testowałem ją i woking, czy zweryfikujesz, że nie anulujesz powiadomienia w innym miejscu? –

+0

Czy możesz opublikować cały kod? –

3

Myślę, że anuluje wszystkie powiadomienia w swojej aplikacji, gdy działalność jest zniszczona.

Powiązane problemy