android - Bad notification posté - ne Pouvait pas étendre RemoteViews pour: StatusBarNotification
Je suis en train de publier une notification avec une vue personnalisée dans la zone de notification à partir d'un IntentService, et d'obtenir le Couldn't expect RemoteView
erreur.
Voici ce que je fais dans onCreate()
:
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
icon = R.drawable.icon;
tickerText = "data upload in progress";
contentView = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notiflayout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, "Hello");
contentView.setProgressBar(R.id.progressBar, 100, 10, false);
whatNext = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), starterActivity.class), 0);
notification = new Notification(icon, tickerText, System.currentTimeMillis());
notification.contentView = contentView;
notification.contentIntent = whatNext;
Je fais appel notify()
de onHandleIntent()
et l'annulation de la notifications dans onDestroy()
.
J'ai vérifié que ce code fonctionne de façon indépendante de l'app, qui n'a pas de IntentService
. Faire cela dans un IntentService
est en quelque sorte donner de la difficulté.
Quelqu'un pourrait-il expliquer qu'est-ce que je fais de mal?
Merci!
Vous devez vous connecter pour publier un commentaire.
Pour moi, le problème était que j'étais à la définition d'une hauteur spécifique pour la racine, mise en page, dans la coutume d'affichage d'une notification fichier xml.
Dès que j'ai changé:
à
dans la racine de la mise en page de l'affichage d'une notification, le problème a été résolu.
Aussi jeter un oeil à cet exemple pour voir un exemple simple de l'utilisation de la mise en page personnalisée pour les notifications.
Couldn't expand RemoteViews for: StatusBarNotification
d'erreur jusqu'à ce que j'ai mis l'affichage personnalisé de la racine de la hauteur pour android:layout_height="64dp"...mais je ne veux pas répondre à cette erreur ci-dessous 5.0,C'est bizarre.pour une raison inconnue, vous n'êtes pas autorisé à référencer dimention dans la vue racine de la coutume de vue à distance! donc, vous avez à coder en dur elle comme
android:layout_height="64dp"
mais si vous avez utiliséandroid:layout_height="@dimen/notification_height_that_64"
il vous donneraBad notification posted - Couldn't expand RemoteViews for: StatusBarNotification
. j'espère que cela aidera 🙂Dans mon cas, l'exception a été causé par un
View
dans mon habitude de notification de mise en page. Fondamentalement, c'est parce que vous êtes autorisés à utiliser uniquement certains gadgets comme TextView, ImageView et ainsi de suite.Pour moi le problème était d'avoir une
View
élément dans la mise en page personnalisée définie pour la fonction de notification personnalisée. Retrait de laView
élément de la mise en page a résolu le problème de la Mauvaise Notification Affichée.Voici un liste des éléments de mise en page qui peut être utilisé, si vous souhaitez créer un personnalisé notification à l'aide de
RemoteView
.Ni projet de nettoyage ni de la mise à la
layout_height
commematch_parent
a fonctionné pour moi.Dans mon cas, j'ai été en mesure de corriger cette erreur en réduisant la taille de l'icône, j'ai été de fournir en
.setSmallIcon();
J'ai eu le même problème. Dans mon cas:
raison -> j'ai utilisé pour le constructeur.setAction(R. drawable.icône,...) de la fonction d'un vectordrawable et j'ai essayé aussi de leur permettre de soutenir lib mais rien n'a fonctionné. Au cours des dernières Android systèmes, je ne vois pas d'icônes d'action, dans les autres, il donne cette erreur.
solution -> je ne trouve rien, la seule solution pour moi est de les éviter .des fichiers xml pour un drawable et à utiliser .png fichiers dans tous les répertoires, hdpi mdpi ldpi..
J'ai eu le même message d'erreur, mais le problème pour moi était le contraindre de mise en page. Je l'ai changé pour
Relative Layout
pour résoudre le problème.@Nikolai réponse a été utile pour moi, en effet, il était le problème.
J'ai eu le même problème. Il y a des contrôles qui peuvent être utilisés dans la notification. Je l'avais Vue dans ma mise en page pour la notification comme ci-dessous.
Ce qui a provoqué le crash.
Suivant les Mises en page et des contrôles sont pris en charge:
Que par ce la documentation officielle.
Je l'ai enlevé et il a bien fonctionné. Espérons que cela aide quelqu'un.
Être prudent lors de l'utilisation de Vecteur d'un drawable. Sur la pré-Sucette dispositifs de réglage d'une icône à travers
NotificationCompat.Builder
méthodes, comme lasetSmallIcon
, seront la cause de ce plantage. Vous obtiendrez le même plantage si l'aide de Vecteur d'un drawable dans votre affichage personnalisé.J'ai été confronté à la même question en montrant la mise en page personnalisée dans la notification, et ce que j'ai trouvé est:
J'ai été en utilisant ConstraintsLayout comme une racine mise en page de mon custom de notification, c'est l'erreur que je commettais. Comme il y a quelques limitations à limiter la mise en page à être utilisé dans android.
Finalement j'ai changé ma racine mise en page à RelativeLayout et ma notification montrant parfaitement. J'ai joint mon point de vue dans la capture d'écran ci-dessous.
Dans mon cas, le problème a une incohérence entre l'appel
Et la
.addAction
appels...Le nombre d'actions différentes, d'où l'erreurje vois l'est beaucoup de difficultés liées à ce sujet, dans mon cas, ce problème a été causé par l'utilisation de
que j'ai utilisé sur mon
ImageButton
et à chaque fois que mon application s'est écrasé, mais quand je l'ai enlevé, tout allait bien, je suppose que le problème est que vous ne devez pas utiliser tout personnaliséView
type ou tout autre thème attributs sur votre point de vue, j'espère que cela va aider un autre coincé avec ce problèmeGénéralement,cette erreur signifie que votre contentView est l'erreur,vérifiez la !
peut-être que vous feriez mieux de remplacer votre contentView avec une mise en page qui contiennent un TextView seulement.Ok,l'exécuter,l'espoir de l'aide pour vous.