可能であれば、音とアイコンとともに通知バーに表示される簡単な通知を作成する必要がありますか?また、Android 2.2と互換性がある必要があるため、NotificationCompat.Builderは4を超えるすべてのAPIで動作することがわかりました。より良い解決策がある場合は、遠慮なく言及してください。
質問する
123195 次
8 に答える
135
NotificationCompat.Builderは、Notifications
すべての Android バージョンで作成する最も簡単な方法です。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
ます。いずれかを見逃した場合、通知は表示されません。
注意: Gingerbread 以下では、コンテンツ インテントを設定する必要があります。そうしないと、 aIllegalArgumentException
がスローされます。
何もしないインテントを作成するには、次を使用します。
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());
于 2012-12-16T14:36:09.957 に答える
29
作業例:
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());
于 2014-12-31T13:30:04.447 に答える