2017-12-05 13 views
1

おそらく、この問題は次のように思ったよりも簡単です。ファンクション内に作成されたnotificationを表示するデバッグの理由)。古いAPIレベルをサポートするAndroid通知を作成する方法(例:lvl 23)

Android Studio 3.0.1、通知を表示する23 LVL API(古いデバイスをサポートするため)および27

LVL APIでNexus5デバイス上で実行されているコード:

PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0); 
    Notification notification = new NotificationCompat.Builder(this) 
      .setTicker("SomethingTicker") 
      .setSmallIcon(R.drawable.someImage) 
      .setContentTitle("SomeTitle") 
      .setContentText("SomeText") 
      .setContentIntent(pi) 
      .build(); 

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(001, notification); 

そのNotificationCompat.Builderを示しコンテキストのみが推奨されなくなりました。新しいバージョンでは通知チャンネルを使用する必要があります。

問題:通知チャネルを作成して登録するには、api lvl> 27を使用する必要があります。

私には何が欠けていますか?そして、何が最善の方法なのですか?

答えて

3

アクティビティのonCreate関数内で作成された通知を表示したいと思います。

Notificationを表示するには奇妙な時間です。

私には何が欠けていますか?

NotificationManager mgr= 
    (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O && 
    mgr.getNotificationChannel(CHANNEL_WHATEVER)==null) { 
    mgr.createNotificationChannel(new NotificationChannel(CHANNEL_WHATEVER, 
    "Whatever", NotificationManager.IMPORTANCE_DEFAULT)); 
} 

そして、全てのAPIレベルのために、NotificationCompat.Builderに(ここでは、CHANNEL_WHATEVER)あなたのチャネル識別子を渡す:あなたが唯一のAndroid 8.0以降のデバイス上で実行されますNotificationChannelを作成するコードが必要

コンストラクタ。古いデバイスでは、チャンネルは無視されます。

+0

注:デバッグの理由から、作成時間は多かれ少なかったです。オプションのパラメータとして設定することは意味があります。ありがとう;) – schlenger

+0

@schlenger: "デバッグのために作成時間が多かれ少なかった" - ああ、OK。 – CommonsWare

関連する問題