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().
czy anulować powiadomienie gdzieś za pomocą mNotificationManager.cancel (NOTIFICATION_ID) ;? – Fahim
zobacz Wspomniałem, że w moim komentarzu, że czyścisz powiadomienie – Fahim