Tengo una configuración de receptor de difusión para que se muestre un mensaje emergente al usuario después de cada actualización de mi aplicación, o si esta es la primera vez que se instala el paquete. Probé esto en mi Droid con Android 2.2 como una instalación nueva y luego de actualizar mi aplicación, así como en el emulador con 1.5 y 1.6, y veo que todo funciona bien.Android Broadcast Receiver Error: Clase no encontrada excepción
Sin embargo, he recibido un informe de error de un usuario que enumera la siguiente excepción:
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
Puede alguien decirme por qué uno de mis usuarios recibieron esta excepción?
En mi archivo de manifiesto, tengo cosas configuración como esta:
<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>
El FirstRunBroadcastReceiver clase se configura como esto:
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
}
}
}
Tras un primer momento de la instalación, el valor por defecto para el compartida Preferencias está configurado para que se muestre el mensaje emergente, pero no creo que tenga nada que ver con esta excepción.
Lo probé de nuevo y no recibo ninguna excepción. Gracias por cualquier ayuda que usted nos pueda proporcionar.
¿Es esto algo continuo para este usuario? ¿O simplemente sucedió una vez? – Falmarri
Hola, Falmarri, desafortunadamente no tengo idea de si esto es una excepción continua o no. Recibí el informe a través del Android Market. Quien encontró este error no me envió un correo electrónico, lo que hubiera sido agradable. Entonces, simplemente no lo sé. Solo hay un informe de error para esto en mi cuenta de Market, pero eso no significa necesariamente nada. – Michael
¿Has resuelto esto? - Publica una respuesta. – levi