NotificationCompatをAndroid OのNotification Channels
で使用する方法に関する情報が表示されない
channelId
を受け取る新しいコンストラクタがありますが、createNotificationChannel
はNotificationChannel
オブジェクトを受け取るため、Compat通知を受け取ってNotificationChannelで使用する方法
API> = 26の場合にのみNotificationChannel
を作成します
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);
}
そして、単に使用します:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "default");
したがって、通知はAPI 26(チャネルあり)とそれ以下(なし)の両方で機能します。
通知マネージャーの宣言:
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";
通知チャンネル
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";
通知ビルダー
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はユーザーに通知します:
mNotific.notify(ncode, n);
NotificationChannelは、実際には複数の通知をチャネルにグループ化します。基本的に、ユーザーへの通知動作の制御を強化します。通知チャネルとその実装の詳細については、 通知チャネルの使用|例付き をご覧ください。
通知チャンネルは、Android Oreoにのみ適用されます。
//Notification channel should only be created for devices running Android 26
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel("unique_channel_id","channel_name",NotificationManager.IMPORTANCE_DEFAULT);
//Boolean value to set if lights are enabled for Notifications from this Channel
notificationChannel.enableLights(true);
//Boolean value to set if vibration is enabled for Notifications from this Channel
notificationChannel.enableVibration(true);
//Sets the color of Notification Light
notificationChannel.setLightColor(Color.GREEN);
//Set the vibration pattern for notifications. Pattern is in milliseconds with the format {delay,play,sleep,play,sleep...}
notificationChannel.setVibrationPattern(new long[]{500,500,500,500,500});
//Sets whether notifications from these Channel should be visible on Lockscreen or not
notificationChannel.setLockscreenVisibility( Notification.VISIBILITY_PUBLIC);
}
コンストラクターに渡されるチャンネルIDは、その通知チャンネルの一意の識別子として機能することに注意してください。次に示すように、通知を作成します
// Creating the Channel
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(notificationChannel);
このチャンネルに通知を追加するには、以下に示すようにチャンネルIDを渡すだけです
//We pass the unique channel id as the second parameter in the constructor
NotificationCompat.Builder notificationCompatBuilder=new NotificationCompat.Builder(this,NOTIFICATION_CHANNEL_ID);
//Title for your notification
notificationCompatBuilder.setContentTitle("This is title");
//Subtext for your notification
notificationCompatBuilder.setContentText("This is subtext");
//Small Icon for your notificatiom
notificationCompatBuilder.setSmallIcon(R.id.icon);
//Large Icon for your notification
notificationCompatBuilder.setLargeIcon( BitmapFactory.decodeResource(getResources(),R.id.icon));
notificationManager.notify( NOTIFICATION_ID,notificationCompatBuilder.build());
すべての作業を行い、結果が得られなかった場合は注意してください。一部のデバイスでは、通知を設定する必要がありますpriority。
final NotificationCompat.Builder mBuilder = new
NotificationCompat.Builder(mContext, "default")
.setPriority(Notification.PRIORITY_MAX);