Bad notification posted from package : Couldn’t expand RemoteViews for: StatusBarNotification
Fatal Exception: android.app.RemoteServiceException: Bad notification posted from package : Couldn’t expand RemoteViews for: StatusBarNotification(pkg=com.test user=UserHandle{0} id=1007 tag=null key=0|com.test|1007|null|10121: Notification(pri=0 contentView=com.test/0x7f0b0032 vibrate=null sound=null defaults=0x0 flags=0x20 color=0x00000000 vis=PRIVATE))
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1732)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6369)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1090)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:951)
위 오류가 발생한 기기정보는 아래와 같다.
브랜드: lenovo
모델: Lenovo K8 Note
방향: 세로
여유 RAM: 2.12 GB
디스크 여유 공간: 44.47 GB
운영체제 버전: 7.1.1
방향: 세로
루팅: 아니요
브랜드: SHARP
모델: AQUOS sense
방향: 세로
여유 RAM: 1.13 GB
디스크 여유 공간: 14.1 GB
운영체제 버전: 7.1.2
방향: 세로
루팅: 아니요
브랜드: samsung
모델: Galaxy J5(2016)
방향: 세로
여유 RAM: 460.19 MB
디스크 여유 공간: 1.51 GB
운영체제 버전: 7.1.1
방향: 세로
루팅: 아니요
브랜드: samsung
모델: Galaxy Grand Prime Pro
방향: 세로
여유 RAM: 260.43 MB
디스크 여유 공간: 532.59 MB
운영체제 버전: 7.1.1
방향: 세로
루팅: 아니요
코드상 문제는 없다!! 아직 해결방법을 찾지 못했다.
아래 해결방법은 나에게 도움이 되지 못했으나, 혹시 도움이 될 개발자도 있을지 모르니 링크해본다.
Bad notification posted – Couldn’t expand RemoteViews for: StatusBarNotification
RemotViews를 사용하는 경우에 layout xml에서 사용될 수 있는 위젯 뷰가 정해져 있음을 새롭게 알게되었다.
사용가능한 레이아웃은 아래 링크를 참고하자
developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout
그러나 내가 만든 리모트뷰에는 사용가능한 뷰만 사용중임에도 이러한 오류가 발생되었다.
노티를 만들때, setLargeIcon() 메소드와 setSmallIcon() 호출 순서를 바꾸었더니 해결되었다는 글도 보았으나 나는 setLargeIcon()메소드를 사용하지 않음으로 패스했다.
.setLargeIcon(bitmap)
.setSmallIcon(R.drawable.notification_small_icon)
Notification notification = new androidx.core.app.NotificationCompat.Builder(this, CHANNEL_ID)
//.setContentTitle("") //자동표기됨
.setContentTitle(context.getResources().getString(R.string.content_txt_45)) //추가
.setAutoCancel(false)
//.setWhen(System.currentTimeMillis())
.setShowWhen(false)
//.setLargeIcon(null)
.setSmallIcon(getPngImage(level))
.setContentIntent(pendingIntent)
.setContent(remoteViews)
.build();
설마… 이미지뷰에 xml 리소스를 사용해서 그런것일까??
views.setImageViewResource(R.id.widet_bar10, R.drawable.line_garo_gauge_empty);
line_garo_gauge_empty.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="3dp"
/>
<solid
android:color="@color/colorxml_color_03"
/>
<size
android:width="14dp"
android:height="80dp"
/>
<stroke
android:width="1dp"
android:color="@color/colorxml_color_03"
/>
</shape>
혹시 @dimen를 사용중이라면 제거해야한다. android:layout_height=”50dp”처럼 하드코딩해야된다.
아래 링크는 많은 개발자들의 자신이 해결한 방법들에 대해 댓글들이 달렸다.