Help us understand the problem. What is going on with this article?

カスタムViewのNotificationを持つアプリにAndroidXを導入した際に出たエラーと対応

More than 1 year has passed since last update.

独自のViewを定義したNotificationを使用したAndroidアプリで、Support LibraryをAndroidXに置換えた時、次のようなエラーが出た。

08-14 01:02:03.603 28933-28933/[パッケージ名] E/AndroidRuntime: FATAL EXCEPTION: main
    android.app.RemoteServiceException: Bad notification posted from package [パッケージ名]: Couldn't expand RemoteViews for: StatusBarNotification(pkg=[パッケージ名] id=1 tag=null score=0 notn=Notification(pri=0 contentView=[パッケージ名]/0x7f0c006f vibrate=null sound=null defaults=0x0 flags=0x62 kind=[null]) user=UserHandle{0})
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1413)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:213)
        at android.app.ActivityThread.main(ActivityThread.java:5092)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
        at dalvik.system.NativeStart.main(Native Method)

エラーの行も出ないので色々確認して調べたところ、NotificatioのレイアウトXMLにあった以下の定義が原因だった。

        <ImageView
            android:id="@+id/notificationAlbumArtImageView"
            android:layout_width="@android:dimen/notification_large_icon_width"
            android:layout_height="@android:dimen/notification_large_icon_height"
            android:layout_alignParentStart="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginEnd="4dp"
            android:layout_marginRight="4dp"
            android:adjustViewBounds="true"
            android:background="?attr/selectableItemBackground"
            android:clickable="false"
            android:contentDescription="@null"
            android:scaleType="fitCenter"
            app:srcCompat="@drawable/ic_media_default" />

android:backgroundを削除したところ、エラーは出なくなった。値として指定した?attr/selectableItemBackgroundが問題を起こしていた模様。
この値は元々Notification上では効果が無かったので意味は無かった。これは、昔色々試したときに入れた物がそのまま残ってたものが、今頃になってエラーとして顕在化してしまった。

教訓:余計なコードは削除する。残さない。

wa2c
現在はAndroidエンジニアとして働いています。 趣味でAndroid向け音楽プレイヤー Medoly ( https://play.google.com/store/apps/details?id=com.wa2c.android.medoly ) を開発しています。 アイコン画像は、インドの Pune にある Shaniwar Wada の門扉。
https://www.wa2c.com/wp/
yumemi
みんなが知ってるあのサービス、実はゆめみが作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用。Swift, Kotlin, PHP, Vue.js, React.js, Node.js, AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中https://twitter.com/yumemiinc
http://www.yumemi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした