2011-07-28 7 views
5

Pracuję nad aplikacją na Androida i chcę otrzymywać powiadomienia o pasku stanu, którego użytkownik nie może usunąć. Czy ktoś wie, jak to zrobić? Widziałem je w aplikacjach takich jak Skimble, w których pojawia się niewyraźne powiadomienie podczas korzystania z aplikacji.Powiadomienie paska stanu Android: spraw, aby nie było do usunięcia i kazało mu wrócić do aplikacji (nie uruchamiać nowej instancji).

Również, gdy użytkownik kliknie/naciśnie powiadomienie, chcę, aby powrócił do instancji aplikacji, która już działa. Teraz rozpoczyna nową instancję. Znowu jak w aplikacji Skimble, po prostu chcę wrócić do już działającej instancji aplikacji.

Dzięki.

Odpowiedz

4

Znalazłem rozwiązanie tego problemu. Użyłem FLAG_ONGOING_EVENT, aby powiadomienie trwało. Oto kod:

String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 

    int icon = R.drawable.mypic; 
    long when = System.currentTimeMillis(); 
    Notification notification = new Notification(icon, tickerText, when); 
    notification.flags = Notification.FLAG_ONGOING_EVENT; 

    Context context = getApplicationContext(); 
    CharSequence contentTitle = "Title Text"; 
    CharSequence contentText = "Content text."; 

    Intent intent = new Intent(this, MyClass.class); 
    intent.setAction("android.intent.action.MAIN"); 
    intent.addCategory("android.intent.category.LAUNCHER"); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

    final int HELLO_ID = 1; 
    mNotificationManager.notify(HELLO_ID, notification); 
+0

Zamiast używać 'FLAG_ONGOING_EVENT' można również użyć' FLAG_NO_CLEAR', w zależności od miejsca, w którym ma się pojawić powiadomienie (więcej informacji [tutaj] (http://developer.android.com/reference/android/app) /Notification.html#FLAG_NO_CLEAR)) – THelper

0

notification.setLatestEventInfo jest przestarzała, więc trzeba użyć Notification.builder a jeśli za pomocą 2.X i niższy API trzeba użyć NotificationComacpt.Builder i to nie dotyczy i nie mogłem nie sprawię, że moje powiadomienie zostanie. więc użyłem setDeleteIntent i wskazałem na tę samą aktywność i na zasadzie wznowienia po prostu wywołaj blok kodu, który pokazuje twoje powiadomienie. Więc to trochę działa.

3

Oto rozwiązanie dla NotificationCompat.Builder

NotificationCompat.Builder builder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher) .setContentTitle("MyApp") .setContentText("MyMsg") .setOngoing(true);

Więcej na Google docs.

Powiązane problemy