Android

[안드로이드]샤오미폰(Xiaomi) RemoteServiceException: Bad notification() : Couldn’t inflate contentViewsjava.lang.NullPointerException: Attempt to invoke virtual method ‘android.app.Notification$MessagingStyle android.app.Notification$MessagingS..

앱 사용자들 중에 안드로이드11 최신운영체제를 사용하는 샤오미(Xiaomi) 폰에서 많은 오류 보고서 발생했다. 

기종은 Mi 10,POCO F2 Pro,Mi 10 lite 5G 등 이다. 


Fatal Exception: android.app.RemoteServiceException: 
Bad notification(tag=null, id=3020) posted from package com.text
, crashing app(uid=10026, pid=3055)
: Couldn't inflate contentViewsjava.lang.NullPointerException
: Attempt to invoke virtual method 
'android.app.Notification$MessagingStyle 
android.app.Notification$MessagingStyle.setConversationType(int)' on a null object reference
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2047)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:236)
       at android.app.ActivityThread.main(ActivityThread.java:7876)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

오류 발생의 원인은 아마도 샤오미 폰의 MIMU11 플랫폼의 문제로 보인다. 오류가 발생은 MainActivity 클래스에서 발생하였다.



처음 보는 메소드가 보여 찾아보았다. NotificationCompat.MessagingStyle 너는 무엇을 하는 함수이더냐!!? 샘플코드를 보아서는 대화형의 메세지를 주고받을 때 사용되는 것으로 보여진다. 구글번역기의 도움으로 살펴보았다. 

 

사용자 수에 관계없이 다양한 유형의 여러 개의 앞뒤 메시지를 포함하는 대형 형식 알림을 생성하기위한 도우미 클래스입니다. 이전 버전과 호환되는 동작을 얻으려면 앱에서이 스타일과 함께 알림 작성기의 v7 버전을 사용해야합니다. 그렇지 않으면 사용자에게 일반 알림보기가 표시됩니다. 두 명 이상의 그룹 채팅을위한 대화 제목을 설정하는 데 사용 setConversationTitle(CharSequence)합니다. 사용자가 만든 그룹의 이름이거나 특정 이름이없는 경우 대화 참가자 목록 일 수 있습니다. 플랫폼은이 필드의 존재를 대화가 그룹이라는 힌트로 사용하므로 일대일 채팅의 대화 제목을 설정하지 마십시오. 이 클래스는 “rebuilder”입니다. Builder 객체에 연결하고 다음과 같이 동작을 수정합니다

 Notification notification = new Notification.Builder()
     .setContentTitle("2 new messages with " + sender.toString())
     .setContentText(subject)
     .setSmallIcon(R.drawable.new_message)
     .setLargeIcon(aBitmap)
     .setStyle(new Notification.MessagingStyle(resources.getString(R.string.reply_name))
         .addMessage(messages[0].getText(), messages[0].getTime(), messages[0].getSender())
         .addMessage(messages[1].getText(), messages[1].getTime(), messages[1].getSender()))
     .build();
 


단순한 푸시알림인데 안드로이드 11이 설치된 샤오미 폰에서 노티알림을 확장을 시키는 모양이다. 왜? 누구 맘대로 무조건 확장을 시도해서 오류를 발생하게 하는가? deprecated된 메소드를 샤오미폰에서만 사용하는것인가?

샤오미폰에서 업데이트하겠지 뭐!!! 빨리 업데이트해라 샤오미!!!

 

 

 

 

Leave a Reply

error: Content is protected !!