Отчет об ошибке java.lang.ClassNotFoundException - PullRequest
2 голосов
/ 13 октября 2011

В консоли разработчика я получаю некоторые сообщения об ошибках следующего исключения:

java.lang.RuntimeException: Unable to instantiate receiver com.cypressworks.changelogviewer.InstallReciever: java.lang.ClassNotFoundException: com.cypressworks.changelogviewer.InstallReciever in loader dalvik.system.PathClassLoader[/mnt/asec/com.cypressworks.changelogviewer-1/pkg.apk]
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1773)
at android.app.ActivityThread.access$2400(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.cypressworks.changelogviewer.InstallReciever in loader dalvik.system.PathClassLoader[/mnt/asec/com.cypressworks.changelogviewer-1/pkg.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1764)
... 10 more

Пользователь добавил сообщение, что эта ошибка произошла, когда он обновил само приложение в маркете.

Я никогда не испытывал это Исключение, хотя у меня есть предположение о причине.Приемник слушает android.intent.action.PACKAGE_REPLACE и android.intent.action.PACKAGE_ADDED.Когда само приложение обновляется, широковещательная рассылка отправляется получателю, но в тот момент, когда она должна его получить, она уже удалена.

Звучит ли мое предположение разумно и как избежать этой ошибки?

Вот запись манифеста:

        <receiver
            android:name=".InstallReciever"
            android:exported="false"
            android:enabled="true">
            <intent-filter>
                <action
                    android:name="android.intent.action.PACKAGE_REPLACED" />
                <action
                    android:name="android.intent.action.PACKAGE_ADDED" />
                <data
                    android:scheme="package" />
            </intent-filter>
        </receiver>

Вот код:

public class InstallReciever extends BroadcastReceiver {

    @Override
    public void onReceive(final Context c, final Intent intent) {
        final SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(c);

        //Checking some preferences...

        //Creating a notification

        final String ns = Context.NOTIFICATION_SERVICE;
        final NotificationManager mNotificationManager = (NotificationManager) c
                .getSystemService(ns);

        final int icon = R.drawable.icon;
        final CharSequence tickerText = c.getString(R.string.notification_text);
        final long when = System.currentTimeMillis();

        final Notification notification = new Notification(icon, tickerText,
                when);

        final CharSequence contentText = c.getString(R.string.app_name);

        final Intent notificationIntent = new Intent(c,
                ChangeListActivity.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                | Intent.FLAG_ACTIVITY_SINGLE_TOP
                | Intent.FLAG_ACTIVITY_NEW_TASK);

        final PendingIntent contentIntent = PendingIntent.getActivity(c, 0,
                notificationIntent, 0);

        notification.setLatestEventInfo(c, tickerText, contentText,
                contentIntent);

        mNotificationManager.notify(0, notification);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...