2017-06-08 44 views
30

Nie widzę żadnych informacji o tym, jak używać NotificationCompat z Android O na Notification ChannelsNotificationCompat z API 26

widzę nowy konstruktor pobiera channelId ale jak wziąć Compat zgłoszenie i użyć go w NotificationChannel od createNotificationChannel powoduje wykonanie NotificationChannel obiekt

Odpowiedz

63

Tworzenie NotificationChannel tylko jeśli API> = 26

public void initChannels(Context context) { 
    if (Build.VERSION.SDK_INT < 26) { 
     return; 
    } 
    NotificationManager notificationManager = 
      (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    NotificationChannel channel = new NotificationChannel("default", 
                  "Channel name", 
                  NotificationManager.IMPORTANCE_DEFAULT); 
    channel.setDescription("Channel description"); 
    notificationManager.createNotificationChannel(channel); 
} 

A potem po prostu użyć:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "default"); 

Twoje powiadomienia współpracują z interfejsem API 26 (z kanałem) i poniżej (bez).

+0

, więc czy musisz ustawić dźwięk/oświetlenie/wibracje w kanale, czy nadal to robisz w kompilatorze kompatybilnym? – tyczj

+1

Nie musisz ustawiać dźwięków/świateł/wibracji, MOŻESZ to zrobić. Nie jestem pewien, co się stanie, jeśli masz kanał z niestandardowymi dźwiękami/światłami/wibracje i powiadomieniem niestandardowej wibracji na przykład. Z API 26, ponieważ poniżej kanał jest po prostu ignorowany – stankocken

+0

@ user5195185 Spróbuj użyć androidowej obsługi compat 26.0.2 ("kompilacja" com.android.support: support-compat: 26.0.2'' w build.gradle) –

5

Declare Menedżer Powiadomienie:

final NotificationManager mNotific=    
    (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 

    CharSequence name="Ragav"; 
    String desc="this is notific"; 
    int imp=NotificationManager.IMPORTANCE_HIGH; 
    final String ChannelID="my_channel_01"; 

Powiadomienie Kanał

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) 
    { 
     NotificationChannel mChannel = new NotificationChannel(ChannelID, name, 
    imp); 
      mChannel.setDescription(desc); 
      mChannel.setLightColor(Color.CYAN); 
      mChannel.canShowBadge(); 
      mChannel.setShowBadge(true); 
      mNotific.createNotificationChannel(mChannel); 
     } 

    final int ncode=101; 

    String Body="This is testing notific"; 

Builder Powiadomienie

 Notification n= new Notification.Builder(this,ChannelID) 
       .setContentTitle(getPackageName()) 
       .setContentText(Body) 
       .setBadgeIconType(R.mipmap.ic_launcher) 
       .setNumber(5) 
       .setSmallIcon(R.mipmap.ic_launcher_round) 
       .setAutoCancel(true) 
       .build(); 

NotificationManager powiadamia użytkownika:

  mNotific.notify(ncode, n);