Notification.Builder(context)は、Android Oの通知チャネルの場所で非推奨になりました。
問題:
Notification.Builder(context, StringID)
の代わりにNotification.Builder(context)
を使用した後、Android Oデバイスへの通知を受け取りました。
ただし、Android 23(M)で試してみた後、通知を受け取りませんでした。コードをデバッグしましたが、デバッガーがAndroid 23(M)のNotification.Builder(context、StringID)の行にヒットすると、実行が停止しました。
FIX:
この問題を修正するために、if/else条件を使用して、Android Oデバイスと他のデバイスとを分離しました。
次のコードスニペットがあります。
Notification.Builder notificationBuilder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
notificationBuilder = new Notification.Builder(mContext,
mContext.getResources().getString(R.string.notification_id_channel));
} else {
notificationBuilder = new Notification.Builder(mContext);
}
Android Studioのリントには、次の非推奨行が表示されます。
質問:
その非推奨の警告行を取り除く方法はありますか?
解決策は、NotificationCompat.Builder(Context context, String channelId)
を使用することです。これを使用する場合、APIレベルを確認する必要はありません。Builderは、Oreo以前のデバイスのチャンネルIDを無視します。
API 15、22、23、および26でテストしましたが、完全に機能します。
一意のchannelId(「MyChannelId_01」など)を定義し、NotificationCompat.Builder(ctx、「MyChannelId_01」)を呼び出す必要があります。作成された通知は、このNotificationChannel "MyChannelId_01"に投稿されます。
これにより、通知の重要性を定義できます(これにより、このチャネルに投稿される割り込み通知の方法が制御されます。値はIMPORTANCE_UNSPECIFIED、IMPORTANCE_NONE、IMPORTANCE_MIN、IMPORTANCE_LOW、IMPORTANCE_DEFAULTまたはIMPORTANCE_HIGHです)。
ここに例を見つけることができます: 通知チャネルの作成
私は同じ問題を抱えていたので、Android 22と24をターゲットにしたので、これを行いました:NotificationCompat.Builder notification = new NotificationCompat.Builder(MainActivity.this、 "")
誰かがこれはハックだと言うだろうが、警告は取り除かれ、問題はない。
空の文字列を渡すことは、<Android 26。
これにより26の問題が発生する場合、他の誰かが述べることができます。
ありがとう