1

notificationテキストと画像を使用する標準から、カスタム設計されたレイアウトを使用するより複雑なタイプに変更するには、RemoteViewsクラスを使用する必要があります。また、カスタムビューのため、setContentTitle()を使用する代わりに、setContent(remoteviews)メソッドを使用しました。

カスタムビューに変更した後、setContent, setSmallIcon,とを削除しましたが、削除したsetContentTitle mehods後、通知が再び表示されることはありませんでした。

カスタムビューを使用している場合、setContent()メソッドを使用する必要がありますがそれは正しいですか?他のメソッドを削除しても機能しないのはなぜですか?

RemoteViews remoteviews = new RemoteViews("com.test.example", R.layout.custom_notifications);

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(AudioService.this)
           .setContent(remoteviews)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("My notification")
            .setContentText("Hello World!")
            .setOngoing(true);
4

1 に答える 1

2

ICS以来、NotificationBuilderにはあまり触れていません。今日でも、GBがより人気があった昔ながらのやり方でやっています。時間の例:

        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

            // Setup an intent for when the user taps the notification
        Intent notificationIntent = new Intent(this, SomeActivity.class);
        PendingIntent contentIntent = PendingIntent.getActivity(
            this, 0, notificationIntent, 0);

            // `icona` is the icon shown in the status bar. 
        Notification notification = new Notification(icona,
            "Ticker Text", System.currentTimeMillis());

            // These flags should be self explanatory 
        notification.flags |= Notification.FLAG_NO_CLEAR;
        notification.flags |= Notification.FLAG_ONGOING_EVENT;

            // This is where you select the xml for you custm view
        RemoteViews contentView = new RemoteViews(getPackageName(),
            R.layout.custom_notification);

        notification.contentView   = contentView;
        notification.contentIntent = contentIntent;

            // Some ID number for the OS to keep track of your notification     
        int HELLO_ID = 123456;

            // Send the notification
        mNotificationManager.notify(HELLO_ID, notification);

これは、Androidのすべてのリリースで機能するはずです。Notification.Builderステータスバーの通知を簡単に作成できるようにするためのラッパーだからです。また、androidのソースコードを見ると、ビルダーはこれらのメソッドを呼び出します。

于 2012-12-20T06:45:42.323 に答える