Подтвердить что ты не робот

ClassNotFoundException: не нашел класс "android.os.PersistableBundle" Отто Android 5.0

У меня странная проблема. У меня есть приложение, которое я развернул на устройстве Android 4.4 и использую библиотеку Отто. Я развернул приложение на устройстве Android 5.0. Он по-прежнему работает. Я повторил в 4.4, и приложение не будет запущено.

По-видимому, он пытается использовать PersistableBundle.class, который является классом API 21. Здесь мой журнал:

    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle" on path: DexPathList[[zip file "/data/app/fr.myapp.apk"],nativeLibraryDirectories=[/data/app-lib/fr.myapp, /vendor/lib, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
            at java.lang.Class.getDeclaredMethods(Native Method)
            at java.lang.Class.getDeclaredMethods(Class.java:656)
            at com.squareup.otto.AnnotatedHandlerFinder.loadAnnotatedMethods(AnnotatedHandlerFinder.java:52)
            at com.squareup.otto.AnnotatedHandlerFinder.findAllProducers(AnnotatedHandlerFinder.java:126)
            at com.squareup.otto.HandlerFinder$1.findAllProducers(HandlerFinder.java:33)
            at com.squareup.otto.Bus.register(Bus.java:191)
4b9b3361

Ответ 1

Я нахожу "решение". Просто удалите эту функцию из своей активности:

@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
}

Ответ 2

Измените targetVersion на версию API вашего устройства.

У меня было targetVersion = 21, когда у моего устройства было 4.4 (API 19), изменив значение до 19, решив проблему.

Ответ 3

У меня была такая же проблема на телефонах Samsung Galaxy 3mini и Local. Но я исправил с помощью переопределяющего действия метод. Надеюсь, он сработает для вас.

 @Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    try {
        BusApplication.getInstance().register(this);
    } catch (Exception e) {
        e.printStackTrace();
    }
}