Jak naprawić: android.app.RemoteServiceException: Bad notification posted from package *: Couldn ' t create icon: StatusBarIcon
Widzę następujący wyjątek w dziennikach awarii:
android.app.RemoteServiceException: Bad notification posted from package com.my.package: Couldn't create icon: StatusBarIcon(pkg=com.my.package user=0 id=0x7f02015d level=0 visible=true num=0 )
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1456)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5487)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
Zamieszczam moje powiadomienie z IntentService z zestawu PendingIntent za pośrednictwem Menedżera alarmów przy użyciu następującej metody. Wszystkie przekazywane tutaj wartości pochodzą z pakietu dodatki w PendingIntent / IntentService.
/**
* Notification
*
* @param c
* @param intent
* @param notificationId
* @param title
* @param message
* @param largeIcon
* @param smallIcon
*/
public static void showNotification(Context c, Intent intent,
int notificationId, String title, String message, int largeIcon,
int smallIcon) {
PendingIntent detailsIntent = PendingIntent.getActivity(c,
notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// BUILD
NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
c);
// TITLE
mNotifyBuilder.setContentTitle(title).setContentText(message);
// ICONS
mNotifyBuilder.setSmallIcon(smallIcon);
if (Util.isAndroidOSAtLeast(Build.VERSION_CODES.HONEYCOMB)) {
Bitmap large_icon_bmp = ((BitmapDrawable) c.getResources()
.getDrawable(largeIcon)).getBitmap();
mNotifyBuilder.setLargeIcon(large_icon_bmp);
}
mNotifyBuilder.setContentIntent(detailsIntent);
mNotifyBuilder.setVibrate(new long[] { 500, 1500 });
mNotifyBuilder.setTicker(message);
mNotifyBuilder.setContentText(message);
// NOTIFY
NotificationManager nm = (NotificationManager) c
.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(notificationId, mNotifyBuilder.build());
}
Z tego, co widziałem z innych odpowiedzi-wyjątek, który widzę, dzieje się, gdy {[2] } nie jest poprawnie wywołany.
Sprawdziłem i dwukrotnie sprawdziłem, że identyfikatory zasobów / align = "left" /
23 answers
To, co się działo, to to, że włączałem odniesienie integer do ikony w pakiecie PendingIntent, a ta liczba całkowita była później odwoływana podczas wysyłania do Menedżera powiadomień.
Pomiędzy pobieraniem referencji całkowitej a wyłączaniem oczekującej intencji, aplikacja została zaktualizowana i zmieniono wszystkie możliwe do narysowania odwołania. Liczba całkowita, która była używana do odwoływania się do poprawnego drawable, teraz odwołuje się do niepoprawnego drawable lub none at all ( none at all-causing this crash)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-06 23:44:07
Użycie VectorXml
wewnątrz twojego powiadomienia było znane, że powoduje ten problem. Użyj png
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-25 14:46:20
Nie używaj SVG na Kitkacie!
Miałem ten sam problem za każdym razem, gdy chciałem pokazać powiadomienie na Kitkat. To, co spowodowało dla mnie problem, to to, że zdefiniowałem każdą ikonę w XML (z svg), małą ikonę i ikonę akcji również. Po zastąpieniu ich png-s problem rozwiązany u mojego boku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-24 11:06:34
Android.app.RemoteServiceException: Bad notification posted
Miałem ten sam problem, ale został rozwiązany. Moim problemem jest ".plik xml " zdalnego widoku.W moim pliku xml został dodany jeden View
pomiędzy LinearLayout
dla dzielnika.
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:id="@+id/view"
android:background="#000000" />
Powyższy komponent View
tworzący wyjątek Bad notification. Powodem tego wyjątku jest tylko plik XML Remoteviews.
Po usunięciu tego komponentu View Mój kod działał poprawnie, bez żadnego wyjątku. Więc Ja czułem, że szuflada powiadomień nie akceptuje żadnych niestandardowych widoków.
Więc nie rysuj niczego takiego jak powyższy widok w .plik xml obiektu RemoteView
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-11 13:32:10
Mój problem polegał na tym, że ikona, której używałem na
.setSmallIcon(R.drawable.ic_stat_push_notif)
Nie został odpowiednio wygenerowany. Według oficjalnego doc:
Jak opisano w dostarczaniu zestawów ikon specyficznych dla gęstości i wspieraniu Wielu ekranach, należy utworzyć osobne ikony dla wszystkich uogólnionych gęstości ekranów, w tym niskiej, średniej, wysokiej i ekrany o bardzo dużej gęstości. Dzięki temu twoje ikony będą wyświetlane odpowiednio w całej gamie urządzeń, na których aplikacja może be zainstalowany.
Więc najlepszym sposobem na wypełnienie powyższego, użyłem Generator powiadomień provided by Roman Nurik on https://romannurik.github.io/AndroidAssetStudio/index.html
W ten sposób możesz użyć obrazu (biorąc pod uwagę, że musi on mieć przezroczyste tło) i pozwolić generatorowi wykonać zadanie za Ciebie generując różne rozmiary ikon powiadomień.
Najważniejsze jest to, że jeśli ikona generator po przejrzeniu obrazu, który zamierzasz użyć, pokazuje białe wypełnione kółko lub kwadrat, występują problemy z obrazem, może dlatego, że nie ma żadnych przezroczystości, więc upewnij się, że masz to ok.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-04 22:43:15
W mojej aplikacji ten rodzaj błędu występuje tylko podczas aktualizacji. Jeśli identyfikator zasobu zmieni się w nowszej wersji, Android RemoteView
może nie znaleźć zasobu i wyrzucić RemoteServiceException
. Jeśli opublikujesz trzecią wersję i nie zmienisz identyfikatora zasobu, błędy mogą zniknąć tylko tymczasowo.
Możliwe jest zmniejszenie tego rodzaju błędów poprzez edycję res/values/public.xml
i res/values/ids.xml
. Kompilator wygeneruje indywidualny identyfikator zasobu, jeśli nie znajduje się on w public.xml
lub ids.xml
. When u change the nazwa zasobu lub dodanie nowych zasobów, identyfikator może ulec zmianie, a niektóre urządzenia mogą go nie znaleźć.
Więc krok jest następujący:
- dekompilować plik apk i w
res/values
znaleźćpublic.xml
iids.xml
- Znajdź wszystkie zasoby związane z RemoteView w aplikacji i skopiuj je (strings, dimen, drawable, layout, id, color... )
- Utwórz
public.xml
iids.xml
PODres/values
w kodzie źródłowym i wklej wiersze, które właśnie skopiowałeś
Uwaga:
Gradle 1.3.0 i wyżej ignoruj lokalne public.xml
. Aby to działało, musisz dodać skrypt w swoim build.gradle
afterEvaluate {
for (variant in android.applicationVariants) {
def scope = variant.getVariantData().getScope()
String mergeTaskName = scope.getMergeResourcesTask().name
def mergeTask = tasks.getByName(mergeTaskName)
mergeTask.doLast {
copy {
int i=0
from(android.sourceSets.main.res.srcDirs) {
include 'values/public.xml'
rename 'public.xml', (i == 0? "public.xml": "public_${i}.xml")
i++
}
into(mergeTask.outputDir)
}
}
}
}
Uwaga: Ten skrypt nie obsługuje projektu podmodułów. Próbuję to naprawić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-09 03:55:58
W Android Studio w wersji 3.0.0 i nowszej, podczas dodawania nowego obrazu w folderze drawables wybierz drawable zamiast drawable-v24.
Jeśli obraz, którego używasz, jest już a (v24) po prostu skopiuj go i wklej do tego samego katalogu (np. drawables). Tym razem zapyta cię, który zwykły lub v24 - po prostu upewnij się, że nie jest to v24 i spróbuj ponownie, to powinno naprawić błąd.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-30 04:28:33
Masz tę samą ikonę
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_stat_name" />
I ty
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this, channelId)
.setSmallIcon(R.drawable.ic_stat_name)
.setContentTitle("Title")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-02 12:07:15
Na wypadek, gdyby ikona nie była ważna, możesz zastąpić,
R.drawable.your_icon
Do
android.R.drawable.some_standard_icon
To działa!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-15 07:27:45
Miałem RemoteServiceException, gdy używaj powiadomienia w mojej klasie rozszerza się z FirebaseMessagingService. Dodałem następujący kod do AndroidManifest.xml:
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@drawable/ic_small" />
Również resource ic_small ustawiony w instancji klasy Notification.Builder by method setSmallIcon (int icon).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-19 07:56:32
Ten sam problem zdarzył się również u mnie i rozwiązałem ten sam
REASON: dzieje się tak, ponieważ używamy Vector drawable dla RemoteViews i vector drawable generuje drawable w czasie kompilacji. Nie jestem również pewien, dlaczego niektóre urządzenia nie są w stanie wykryć wygenerowanego identyfikatora zasobów rysowalnych podczas podnoszenia aplikacji. Ale tak, to był powód.
REPRODUCE Kroki 1. Zainstaluj poprzedni kompilator. 2. Wyślij powiadomienie 3. Zaktualizuj kompilację za pomocą kod następnej wersji 4. Po aktualizacji aplikacji nie otwieraj aplikacji i nie Wysyłaj powiadomienia ponownie
Rozwiązanie Zamień wektor drawable na normalny drawable(.png lub .plik jpg.
Mam nadzieję, że to rozwiąże problem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-30 05:13:27
Jeśli masz widoczne powiadomienie podczas aktualizacji aplikacji, możesz go napotkać. Co może być konieczne, to utworzyć BroadcastReceiver, który czeka na wiadomość PACKAGE_CHANGED, w którym momencie można zamknąć wszystkie swoje usługi, które również odrzucić ich powiązanych powiadomień.
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_CHANGED" />
</intent-filter>
</receiver>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-04 16:48:43
Miałem ten sam problem, gdy ustawiałem powiadomienie w pakiecie. Próbowałem tego i to rozwiązało mój problem:
builder.setLargeIcon(large_icon);
builder.setSmallIcon(R.drawable.small_icon);
Upewnij się, że setLargeIcon() została wywołana przed setSmallIcon ().
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-26 10:06:11
Ja też miałem ten sam problem. Problem jest z ikoną, której używasz, używałem Androida.R. drawable.stat_sys_download. Idź do drawables.xml i wklej to.
<resources>
<item name="ic_start_download" type="drawable">@android:drawable/stat_sys_download</item>
</resource>
A następnie w Twoim kodzie
builder.setSmallIcon(R.drawable.ic_start_download);
Możesz spróbować innego obrazu zamiast tego obrazu
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 10:19:13
Mój sposób na rozwiązanie: miałem " złe " widoki w moim układzie (np: pole wyboru) - więc je usunąłem.
RemoteViews wydają się obsługiwać tylko obrazy i teksty (do potwierdzenia przez przeczytanie dokumentu).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-16 08:50:39
Miałem RemoteServiceException podczas korzystania z Androida.wsparcie.ograniczenie.ConstraintLayout. Zmień go na LinearLayout lub Relative a także android: layout_height=" wrap_content " dla kontenera
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 09:06:26
(nie jest to rozwiązanie dla bieżącego pytania, ale pomaga komuś z podobnym problemem core) ja też miałem ten sam problem, ale w moim przypadku używałem corrupted .plik png, który powoduje ten sam problem. Więc usunąłem go i ponownie włączyłem poprawne .plik png.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 15:39:58
Proszę zastąpić <android.support.v7.widget.AppCompatTextView
<TextView
z niestandardowego układu powiadomień.
Ponieważ android.support.v7.widget.AppCompatTextView
lub android.support.v7.widget.AppCompatImageView
działa tylko w czasie wykonywania.
Więc użyj TextView
lub ImageView
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-03 17:48:33
Jeśli ktoś nadal ma do czynienia z tym problemem : Dodaj plik png do folderu rysowalnego o nazwie ic_stat_ic_notification (lub dowolnej nazwy podobnej do u)
I w manifeście dodaj poniżej kilka linijek
I możesz tworzyć swoje ikony tutaj - > https://romannurik.github.io/AndroidAssetStudio/icon
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-17 02:48:13
Zsynchronizuj projekt i wyczyść go, Plik > Synchronize then: Build > Clean Project
Mam nadzieję, że to wam pomoże, to praca dla mnie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-24 09:41:18
Dostałem ten błąd z powodu opcji autolink i linksClickable w textview w widoku powiadomień:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="all"
android:linksClickable="true"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/white" />
Uważaj!Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-21 22:00:35
Możesz umieścić ten wektorowy plik xml zarówno w wersji drawable, jak i drawable v24. Ta wersja Androida mniejsza lub równa Androidowi 6 odbierze go z folderu drawable, a nowsza wersja powyżej Androida 6 odbierze go z drawable v24.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-31 16:10:01
To zadziałało dla mnie. Skomentuj odniesienie do ikony, a tym samym być w stanie korzystać z NotificationCompat.Budowniczy bez problemów.
$msg_notificacion = [
'title' => "titulonotif",
// "icon" : "myicon",
'body' =>"cuerponotif"
];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-03 17:55:09