0

次のコードでカスタム プッシュ通知を表示しようとしています。

  RemoteViews contentView = new RemoteViews(app.context.getPackageName(), R.layout.multiline_notification_layout);
                contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
                contentView.setTextViewText(R.id.text, text);
                contentView.setTextViewText(R.id.title, title);

            notification = new NotificationCompat.Builder(app.context)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setWhen(0)
                    .setContent(contentView)
                    .setContentIntent(contentIntent)
                    .setAutoCancel(true)
                    .build();
        }

        mNotificationManager.notify(NOTIFICATION_ID, notification);
        NOTIFICATION_ID++;

プッシュするとアイコンが表示されます。削除する .setSmallIcon(R.drawable.ic_launcher)と、まったく表示されなくなります。

レイアウトコード:

<?xml version="1.0" encoding="utf-8"?>

<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_marginRight="10dp"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="Title"
    android:id="@+id/title"
    android:layout_toRightOf="@+id/image"
    android:layout_margin="5dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Text"
    android:id="@+id/text"
    android:layout_below="@+id/title"
    android:layout_toRightOf="@+id/image"
    android:layout_margin="5dp"
    android:inputType="textMultiLine" />

4

3 に答える 3

0

コードが機能しない理由はわかりませんが、次のコードは、カスタム レイアウトで通知を表示するために機能します。唯一の (わずかな) 問題は、非推奨の方法を使用していることです。

        NotificationManager
          mManager         = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        Intent myIntent    = new Intent(this,MyActivity.class);
        Notification
          notification     = new Notification(R.drawable.notification_icon, title, System.currentTimeMillis());
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        RemoteViews
          contentView      = new RemoteViews(getPackageName(), R.layout.notification);
        contentView.setImageViewResource(
          R.id.image,
          R.drawable.notification_icon
                             );
        contentView.setTextViewText (
          R.id.title,
          title
                             );
        contentView.setTextViewText (
          R.id.text,
          message
                             );
        notification.contentView
                           = contentView;
        notification.contentIntent
                           = PendingIntent.getActivity (
          this.getBaseContext(),
          0,
          myIntent,
          PendingIntent.FLAG_CANCEL_CURRENT
                             );
        mManager.notify(
          0,
          notification
                             );
于 2013-10-29T14:34:40.493 に答える