可能であれば、音とアイコンとともに通知バーに表示される簡単な通知を作成する必要がありますか?また、Android 2.2と互換性がある必要があるため、NotificationCompat.Builderは4以上のすべてのAPIで動作することがわかりました。より良い解決策があれば、お気軽に言及してください。
NotificationCompat.Builder は、すべてのAndroidバージョンでNotifications
を作成する最も簡単な方法です。 Android 4.1で利用可能な機能を使用することもできます。アプリがAndroid> = 4.1のデバイスで実行される場合、新しい機能が使用されます。Android <4.1で実行される場合、通知は単純な古い通知になります。
簡単な通知を作成するには、単に 通知に関するAndroid APIガイド を参照してください):
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notification_icon)
.setContentTitle("My notification")
.setContentText("Hello World!")
.setContentIntent(pendingIntent); //Required on Gingerbread and below
少なくともsmallIcon
、contentTitle
、およびcontentText
を設定する必要があります。あなたが1つを逃した場合、通知は表示されません。
注意:Gingerbread以下では、コンテンツの意図を設定する必要があります。そうしないと、IllegalArgumentException
がスローされます。
何もしないインテントを作成するには、次を使用します。
final Intent emptyIntent = new Intent();
PendingIntent pendingIntent = PendingIntent.getActivity(ctx, NOT_USED, emptyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
ビルダー、つまりRingtoneManagerからのサウンドを介してサウンドを追加できます。
mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
通知は、NotificationManagerを介してバーに追加されます。
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(mId, mBuilder.build());
作業例:
Intent intent = new Intent(ctx, HomeActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder b = new NotificationCompat.Builder(ctx);
b.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.ic_launcher)
.setTicker("Hearty365")
.setContentTitle("Default notification")
.setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
.setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_SOUND)
.setContentIntent(contentIntent)
.setContentInfo("Info");
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, b.build());
私はこの方法を作り、うまく動作します。 (Android 6.0.1)でテスト済み)
public void notifyThis(String title, String message) {
NotificationCompat.Builder b = new NotificationCompat.Builder(this.context);
b.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.favicon32)
.setTicker("{your tiny message}")
.setContentTitle(title)
.setContentText(message)
.setContentInfo("INFO");
NotificationManager nm = (NotificationManager) this.context.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(1, b.build());
}
Android 8.0で通知を表示
@TargetApi(Build.VERSION_CODES.O)
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void show_Notification(){
Intent intent=new Intent(getApplicationContext(),MainActivity.class);
String CHANNEL_ID="MYCHANNEL";
NotificationChannel notificationChannel=new NotificationChannel(CHANNEL_ID,"name",NotificationManager.IMPORTANCE_LOW);
PendingIntent pendingIntent=PendingIntent.getActivity(getApplicationContext(),1,intent,0);
Notification notification=new Notification.Builder(getApplicationContext(),CHANNEL_ID)
.setContentText("Heading")
.setContentTitle("subheading")
.setContentIntent(pendingIntent)
.addAction(Android.R.drawable.sym_action_chat,"Title",pendingIntent)
.setChannelId(CHANNEL_ID)
.setSmallIcon(Android.R.drawable.sym_action_chat)
.build();
NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(notificationChannel);
notificationManager.notify(1,notification);
}
コード
Intent intent = new Intent(this, SecondActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.your_notification_icon)
.setContentTitle("Notification Title")
.setContentText("Notification ")
.setContentIntent(pendingIntent );
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mBuilder.build());
通知は、通知を使用して作成できます。 BuilderまたはNotificationCompat.Builderクラス。
ただし、下位互換性が必要な場合は、NotificationCompat.Builderクラスをv4サポートライブラリの一部として使用する必要があります。 4以上。
通知には4つのコアプロパティがあります(3つの基本表示プロパティ+ 1クリックアクションプロパティ)
ボタンクリックイベントは、Android 3.0以降でオプションになります。minSdkターゲットAndroid 3.0以上の場合、表示プロパティのみを使用して通知を作成できます。ただし、通知をAndroid 3.0よりも古いデバイスで実行する場合は、Clickイベントを提供する必要があります。そうでない場合、IllegalArgumentExceptionが表示されます。
NotificationMangerクラスのnotify()メソッドを呼び出すと、通知が表示されます
通知メソッドには2つのバリアントがあります
notify(String tag, int id, Notification notification)
または
notify(int id, Notification notification)
notifyメソッドは整数IDを受け取り、通知を一意に識別します。ただし、競合が発生した場合に通知をさらに識別するために、オプションのStringタグを提供することもできます。
このタイプの競合はまれですが、たとえば、いくつかのライブラリを作成し、他の開発者がライブラリを使用しています。今、彼らは彼ら自身の通知を作成し、どういうわけかあなたの通知と他の開発者の通知IDは同じです、そしてあなたは衝突に直面するでしょう。
API 11は、通知動作の追加制御を提供します
通知の解雇
デフォルトでは、ユーザーが通知をタップすると、割り当てられたクリックイベントが実行されますが、通知は消去されません。通知をクリアしたい場合は、これを追加する必要があります
mBuilder.setAutoClear(true);
ユーザーが通知を消さないようにする
ユーザーは通知をスワイプすることで却下することもできます。通知の作成中にこれを追加すると、このデフォルトの動作を無効にできます
mBuilder.setOngoing(true);
通知の位置
通知に相対的な優先度を設定するには、
mBuilder.setOngoing(int pri);
アプリが11よりも低いAPIで実行されている場合、通知は上記の追加機能なしで機能します。これは、Notification.BuilderよりもNotificationCompat.Builderを選択する利点です。
API 16の導入により、非常に多くの新機能が通知されました
通知は非常に有益です。
bigPictureをロゴに追加できます。その人の写真を表示できるmBuilder.setLargeIcon(Bitmap bitmap)を使用して、その人からメッセージを取得したとします。そのため、ステータスバーでは、スクロールするとアイコンが表示され、アイコンの代わりに人物の写真が表示されます。他の機能もあります
簡単な通知方法
NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher) //icon
.setContentTitle("Test") //tittle
.setAutoCancel(true)//swipe for delete
.setContentText("Hello Hello"); //content
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build()
);
あなたはこのコードを試すことができます、これは私にとってうまくいきます:
NotificationCompat.Builder mBuilder= new NotificationCompat.Builder(this);
Intent i = new Intent(noti.this, Xyz_activtiy.class);
PendingIntent pendingIntent= PendingIntent.getActivity(this,0,i,0);
mBuilder.setAutoCancel(true);
mBuilder.setDefaults(NotificationCompat.DEFAULT_ALL);
mBuilder.setWhen(20000);
mBuilder.setTicker("Ticker");
mBuilder.setContentInfo("Info");
mBuilder.setContentIntent(pendingIntent);
mBuilder.setSmallIcon(R.drawable.home);
mBuilder.setContentTitle("New notification title");
mBuilder.setContentText("Notification text");
mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
NotificationManager notificationManager= (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(2,mBuilder.build());
このコードを使用
Intent intent = new Intent(getApplicationContext(), SomeActvity.class);
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(),
(int) System.currentTimeMillis(), intent, 0);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.your_notification_icon)
.setContentTitle("Notification title")
.setContentText("Notification message!")
.setContentIntent(pIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, mBuilder.build());