2017-10-16 1 views
2

に掲載悪い通知私は、特定のHuawei社のデバイス(HUAWEI TIT-L01)のクラッシュが、私はGoogleのandroid.app.RemoteServiceException:華為Y6

を用いて情報の多くを見つけることないよアンドロイド5.1

を実行していることです

スタックトレース:

android.app.RemoteServiceException: Bad notification posted from package 
com.myapp.test: Couldn't expand RemoteViews for: 
StatusBarNotification(pkg=com.myapp.test user=UserHandle{0} 
id=1 tag=null score=0 key=0|com.myapp.test|1|null|10693: 
Notification(pri=0 contentView=com.myapp.test/0x109007e 
vibrate=null sound=null defaults=0x0 flags=0x0 color=0x00000000 
category=transport actions=3 vis=PRIVATE)) 

コード(私はこれを書いていなかったので、私を判断しないでください):

private static void buildNotification(Notification.Action action) 
{ 
    final Notification.MediaStyle style = new Notification.MediaStyle(); 

    final Intent intent = new Intent(MyApplication.getAppContext(), MediaPlayerService.class); 
    intent.setAction(ACTION_STOP); 
    final PendingIntent pendingIntent = PendingIntent.getService(MyApplication.getAppContext(), 1, intent, 0); 

    Bitmap coverImage = null; 
    String bookTitle = ""; 
    String author = ""; 
    if (PlaybackUtils.INSTANCE.getCurrentBookPerformant() != null) { 
     coverImage = CoverUtils.INSTANCE.getOnlineImage(PlaybackUtils.INSTANCE.getCurrentBookPerformant()); 
     bookTitle = PlaybackUtils.INSTANCE.getCurrentBookPerformant().getTitle(); 
     author = PlaybackUtils.INSTANCE.getCurrentBookPerformant().getCreator(); 
    } else if (PlaybackUtils.INSTANCE.getCurrentContentImpl() != null) { 
     coverImage = CoverUtils.INSTANCE.loadDeviceCover(PlaybackUtils.INSTANCE.getCurrentContentImpl()); 
     bookTitle = PlaybackUtils.INSTANCE.getCurrentContentImpl().getTitle(); 
     author = PlaybackUtils.INSTANCE.getCurrentContentImpl().getAuthor(); 
    } 

    final Notification.Builder builder = new Notification.Builder(MyApplication.getAppContext()). 
      setSmallIcon(R.drawable.logo_statusbar) 
      .setLargeIcon(coverImage) 
      .setContentTitle(bookTitle) 
      .setContentText(author) 
      .setDeleteIntent(pendingIntent) 
      .setStyle(style); 

    builder.addAction(generateAction(android.R.drawable.ic_media_previous, "Previous", ACTION_PREVIOUS)); 
    builder.addAction(action); 
    builder.addAction(generateAction(android.R.drawable.ic_media_next, "Next", ACTION_NEXT)); 
    style.setShowActionsInCompactView(0, 1, 2); 

    final NotificationManager notificationManager = (NotificationManager) MyApplication.getAppContext().getSystemService(Context.NOTIFICATION_SERVICE); 
    final Notification build = builder.build(); 
    notificationManager.notify(1, build); 
} 
+0

このコードでは例外が発生していますか?私はあなたが 'RemoteViews'を使っているところを見ません。 – CommonsWare

+0

私はかなり確信しています。 MediaStyleは、AndroidのNotification $ MediaStyle内の通知 – PrisonMike

+0

のビュー階層を決定します。いくつかのメソッドはRemoteViewsオブジェクトを返します。私の推測では、それはmakeMediaContentViewメソッドのです – PrisonMike

答えて

0

同じ問題に直面しています。 Huaweiのデバイスの中には、通知の標準MediaStyleをサポートしていないものがあるようです。あなたがHuaweiで走るならば、MediaStyleを加えないでください。

final Notification.Builder builder = new Notification.Builder(MyApplication.getAppContext()) 
    .setSmallIcon(R.drawable.logo_statusbar) 
    .setLargeIcon(coverImage) 
    .setContentTitle(bookTitle) 
    .setContentText(author) 
    .setDeleteIntent(pendingIntent); 
if (!Build.MANUFACTURER.toLowerCase(Locale.getDefault()).contains("huawei")) { 
    builder.setStyle(style); 
} 
final Notification build = builder.build(); 
notificationManager.notify(1, build);