6 Stimmen

Android Broadcast Receiver Fehler: Ausnahme: Klasse nicht gefunden

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X