Ich habe einen Broadcast-Empfänger so eingerichtet, dass dem Benutzer nach jeder Aktualisierung meiner Anwendung oder wenn das Paket zum ersten Mal installiert wird, eine Popup-Meldung angezeigt wird. Ich habe dies auf meinem Android-Gerät mit Android 2.2 sowohl als Neuinstallation als auch nach der Aktualisierung meiner App sowie im Emulator mit 1.5 und 1.6 getestet, und ich sehe, dass alles gut läuft.
Ich habe jedoch einen Fehlerbericht von einem Benutzer erhalten, in dem die folgende Ausnahme aufgeführt ist:
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
Kann mir jemand sagen, warum einer meiner Benutzer diese Ausnahme erhalten hat?
In meiner Manifest-Datei habe ich die Dinge wie folgt eingestellt:
<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>
Die Klasse FirstRunBroadcastReceiver ist wie folgt aufgebaut:
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
}
}
}
Bei der Erstinstallation ist der Standardwert für die gemeinsamen Voreinstellungen so eingestellt, dass die Popup-Meldung angezeigt wird, aber ich denke nicht, dass das etwas mit dieser Ausnahme zu tun hat.
Ich habe es erneut getestet, und ich erhalte keine Ausnahme. Vielen Dank für jede Hilfe, die Sie anbieten können.