59

可能であれば、音とアイコンとともに通知バーに表示される簡単な通知を作成する必要がありますか?また、Android 2.2と互換性がある必要があるため、NotificationCompat.Builderは4を超えるすべてのAPIで動作することがわかりました。より良い解決策がある場合は、遠慮なく言及してください。

4

8 に答える 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

少なくともsmallIconcontentTitleおよびを設定する必要があり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 に答える