J'ai trois appareils de test. Je ne peux pas afficher la notification personnalisée dans Android 6.0 et 4.3 tandis que le même code fonctionne comme un charme dans 5.1.1La mise en page de notification personnalisée se bloque sur Android 6.0 et 4.3
Je suis vraiment fatigué du dilemme de compatibilité d'Android.
Ceci est mon avis personnalisé dans Android 5.1.1 comparaissent:
Voici mon code:
private void notification(Radio radio, int playPauseImage) {
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.activity_notification);
contentView.setImageViewResource(R.id.imgChannelLogo, Utils.getChannelLogoByPosition(currentRadioId));
contentView.setTextViewText(R.id.txtChannelName, radio.getKanalAdi());
contentView.setTextViewText(R.id.txtCategory, radio.getKategoriAdi());
contentView.setImageViewResource(R.id.mediacontroller_previous, android.R.drawable.ic_media_rew);
contentView.setImageViewResource(R.id.mediacontroller_play_pause, playPauseImage);
contentView.setImageViewResource(R.id.mediacontroller_next, android.R.drawable.ic_media_ff);
PendingIntent pendingPlayPauseIntent = PendingIntent.getBroadcast(this, 0, new Intent(PLAYPAUSE), 0);
PendingIntent pendingNextIntent = PendingIntent.getBroadcast(this, 0, new Intent(NEXT), 0);
PendingIntent pendingPreviousIntent = PendingIntent.getBroadcast(this, 0, new Intent(PREVIOUS), 0);
PendingIntent pendingCloseIntent = PendingIntent.getBroadcast(this, 0, new Intent(CLOSE), 0);
contentView.setOnClickPendingIntent(R.id.mediacontroller_play_pause, pendingPlayPauseIntent);
contentView.setOnClickPendingIntent(R.id.mediacontroller_next, pendingNextIntent);
contentView.setOnClickPendingIntent(R.id.mediacontroller_previous, pendingPreviousIntent);
contentView.setOnClickPendingIntent(R.id.imgClose, pendingCloseIntent);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_status)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher))
.setContent(contentView)
.setWhen(System.currentTimeMillis())
.setTicker(getText(R.string.ticker));
notificationBuilder.mNotification.bigContentView = contentView;
startForeground(1337, notificationBuilder.mNotification);
}
Et l'exception accident causant:
FATAL EXCEPTION: main
Process: com.mypackage.myapp, PID: 12134
android.app.RemoteServiceException: Bad notification posted from package com.mypackage.myapp: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.mypackage.myapp user=UserHandle{0} id=1337 tag=null score=0 key=0|com.mypackage.myapp|1337|null|10166: Notification(pri=0 contentView=com.mypackage.myapp/0x7f04001a vibrate=null sound=null tick defaults=0x0 flags=0x62 color=0x00000000 vis=PRIVATE))
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1507)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Je donne aussi ma mise en page XML notificaiton:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="176dp"
android:background="#181818"
android:orientation="vertical" >
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView
android:id="@+id/imgChannelLogo"
android:layout_width="96dp"
android:layout_height="96dp" />
<LinearLayout
android:id="@+id/llRadioInfo"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/imgChannelLogo"
android:layout_toRightOf="@+id/imgChannelLogo"
android:layout_toLeftOf="@+id/imgClose"
android:layout_toStartOf="@+id/imgClose"
android:paddingLeft="10dp"
android:paddingStart="10dp"
android:paddingRight="0dp"
android:paddingEnd="0dp">
<TextView
android:id="@+id/txtChannelName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp"
android:textColor="@android:color/white"
android:textStyle="bold"/>
<TextView
android:id="@+id/txtCategory"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textStyle="bold"/>
</LinearLayout>
<ImageView
android:id="@+id/imgClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:layout_gravity="center" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@color/mediacontroller_bg">
<ImageButton
android:id="@+id/mediacontroller_previous"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_toLeftOf="@+id/mediacontroller_play_pause"
android:layout_toStartOf="@+id/mediacontroller_play_pause"
android:background="@drawable/mediacontroller_button"
android:contentDescription="@string/mediacontroller_previous"
android:src="@android:drawable/ic_media_rew"
android:onClick="previousChannel"
android:scaleType="fitCenter" />
<ImageButton
android:id="@+id/mediacontroller_play_pause"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:background="@drawable/mediacontroller_button"
android:contentDescription="@string/mediacontroller_play_pause"
android:src="@drawable/mediacontroller_pause"
android:scaleType="fitCenter"
android:paddingTop="10dp"
android:paddingBottom="10dp" />
<ImageButton
android:id="@+id/mediacontroller_next"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_toRightOf="@+id/mediacontroller_play_pause"
android:layout_toEndOf="@+id/mediacontroller_play_pause"
android:background="@drawable/mediacontroller_button"
android:contentDescription="@string/mediacontroller_next"
android:src="@android:drawable/ic_media_ff"
android:onClick="nextChannel"
android:scaleType="fitCenter" />
</RelativeLayout>
</LinearLayout>
Alors où est le problème dans ma mise en œuvre? Je sais que je dois utiliser seulement quelques composants dans mon RemoteView
mais je pense qu'il n'y a pas de composant inapproprié. Tous les conseils seront très appréciés.
Cela ne fonctionne pas. J'ai résolu mon propre problème et je vais y répondre. Le titre du contenu et le texte du contenu ne sont pas requis selon mes tests. –
J'ai aussi ce médiastyle, le bug est toujours là – PrisonMike