2013-04-17 10 views
5

Nie mogę utworzyć powiadomienia w stylu Big View. Wspierać problemy z biblioteką? Mój kod jest w porządku w Eclipse (bez błędów), ale powiadomienie pokazuje tylko zawartośćTytuł, ContentText, ikona ... to wszystko! Brak dodatkowych linii w moim powiadomieniu ... Co jest nie tak? Dziękuję bardzo za odpowiedź. Oto kod ...Nie mogę ustawić stylów widoku Big View

@Override 
protected void onMessage(Context arg0, Intent arg1) { 
    // TODO Auto-generated method stub 
    //Log.d("onMessage", String.valueOf(arg1)); 
    //Log.d("onMessage", "Receive a message"); 
    // Get the data from intent and send to notification bar 
    String message = arg1.getExtras().getString("message"); 
    generateNotification3(arg0, message); 
} 


private static void generateNotification3(Context context, String message) {  
    NotificationCompat.Builder mbuilder = 
      new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("lolo") 
      .setContentText("text") 
      .setDefaults(Notification.DEFAULT_ALL) // requires VIBRATE permission 
      /* 
      * Sets the big view "big text" style and supplies the 
      * text (the user's reminder message) that will be displayed 
      * in the detail area of the expanded notification. 
      * These calls are ignored by the support library for 
      * pre-4.1 devices. 
      */ 
      .setStyle(new NotificationCompat.BigTextStyle() 
        .bigText(message)); 

    // Creates an explicit intent for an Activity in your app 
     Intent resultIntent = new Intent(context, Fsa.class); 

     // The stack builder object will contain an artificial back stack for 
     // the 
     // started Activity. 
     // This ensures that navigating backward from the Activity leads out of 
     // your application to the Home screen. 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); 

     // Adds the back stack for the Intent (but not the Intent itself) 
     stackBuilder.addParentStack(Fsa.class); 

     // Adds the Intent that starts the Activity to the top of the stack 
     stackBuilder.addNextIntent(resultIntent); 
     PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, 
       PendingIntent.FLAG_UPDATE_CURRENT); 
     mbuilder.setContentIntent(resultPendingIntent); 

     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

     // mId allows you to update the notification later on. 
     mNotificationManager.notify(100, mbuilder.build()); 

} 
+10

Czy próbowałeś ręcznie powiększyć powiadomienie (dotknij dwoma palcami obok siebie i przeciągnij w dół)? Powiadomienia będą automatycznie rozwijane tylko wtedy, gdy pojawią się u góry listy. – dsandler

+1

Gosh! masz rację !!! Doskonały !!!! Czy istnieje sposób, aby rozszerzyć go programowo? Dodałem .setOngoing (true) (na górę), ale nie jest ono rozwinięte ... (nie jest to naprawdę szczyt, ponieważ pierwszym jest powiadomienie, gdy podłączam się do USB w celu rozwijania narzędzi). Jeszcze raz dziękuję przyjacielu! – Kris88

+0

Nie, nie ma sposobu, aby go rozszerzyć programowo. Chodzi o to, że polityka ekspansji zależy od użytkownika i interfejsu systemu; aplikacje powinny po prostu dostarczać dane. – dsandler

Odpowiedz

14

Według oficjalnej dokumentacji here „Powiększenie pojawia się tylko wtedy, gdy zawiadomienie jest rozszerzona, co się dzieje, gdy zgłoszenie jest w górnej szufladzie powiadomień, lub gdy użytkownik rozszerza powiadomienie z gestem " Tak więc, aby uzyskać styl Big View, powiadomienie zostanie umieszczone na górze listy.

Aby to zrobić, Podczas tworzenia powiadomienia należy dodać:

setPriority(Notification.PRIORITY_MAX) 

tak będzie zawsze umieszczony w górnej pozycji listy, kiedy został doręczony (oczywiście, jeśli użytkownik nie otwiera pojawi się szuflada powiadomień i inne powiadomienia o maksymalnym priorytecie, a następnie nie ma gwarancji, że Twoja będzie nadal na szczycie).

+0

Nie gwarantuje to, że trafi ono na początek listy, a także jest niezgodne z najlepszymi praktykami. Flaga P_MAX nie jest używana w tym przypadku, a także wiele razy, kiedy to nadal nie zadziałałoby (np. Trwająca flaga zdarzenia). To pytanie jest nadal aktualne i otwarte jako takie. Jeśli masz działające rozwiązanie, edytuj swój wpis. – Japes

Powiązane problemy