Ho una configurazione ricevitore broadcast in modo che un messaggio popup venga visualizzato all'utente dopo ogni aggiornamento della mia app o se questa è la prima volta che il pacchetto viene installato. Ho provato questo sul mio Droid con Android 2.2 sia come una nuova installazione e dopo aver aggiornato la mia app, sia nell'emulatore con 1.5 e 1.6, e vedo che tutto funziona alla perfezione.Errore ricevitore broadcast Android: eccezione di classe non trovata
Tuttavia, ho ricevuto una segnalazione di errore da un utente che elenca la seguente eccezione:
java.lang.RuntimeException: Unable to instantiate receiver
com.name.pkg.FirstRunBroadcastReceiver: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2789)
at android.app.ActivityThread.access$3200(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.name.pkg.app_name.FirstRunBroadcastReceiver in loader dalvik.system.PathClassLoader[/data/app/com.name.pkg.app_name.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:2780)
... 10 more
Qualcuno mi può dire perché uno dei miei utenti ha ricevuto questa eccezione?
Nel mio file manifesto, ho cose configurazione come questa:
<receiver android:name=".FirstRunBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACE"/>
<data android:scheme="package" android:path="com.name.pkg.app_name">
</intent-filter>
</receiver>
Il FirstRunBroadcastReceiver classe è messa a punto come questo:
package com.name.pkg.app_name;
public class FirstRunBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Contenxt context, Intent intent)
{
Uri uri = intent.getData();
if(uri.toString().compareTo("package:com.name.pkg.app_name") == 0)
{
//set shared prefs data to determine if start-up message should be shown
}
}
}
C'era una prima volta l'installazione, il valore predefinito per la condivisione prefs è impostato in modo che venga visualizzato il messaggio pop-up, ma non penserei che avrebbe nulla a che fare con questa eccezione.
L'ho testato di nuovo e non ricevo un'eccezione. Grazie per tutto l'aiuto che potete fornire.
È una cosa continua per questo utente? O è successo una volta sola? – Falmarri
Ciao Falmarri, sfortunatamente non ho idea se questa sia un'eccezione continua o meno. Ho ricevuto il rapporto attraverso l'Android Market. Chiunque abbia riscontrato questo errore non mi ha mandato un'email, sarebbe stato bello. Quindi non lo so. C'è solo un rapporto di errore per questo nel mio account Market, ma questo non significa necessariamente nulla. – Michael
Hai risolto questo? - Pubblica una risposta. – levi