Системные настройки принудительно закрываются при открытии виджета

Мои пользователи сообщают об авариях, возникающих при попытке выбрать виджет с моим приложением (не приложение для запуска). Я использую стандартный код выбора виджета, и он всегда работал и работает на всех устройствах, кроме LG G2 и LG G3 .

Я нашел несколько аналогичных вопросов, но все они относятся к сбою, с которым столкнулся Android 2.1, который был решен с пустым обходом данных (который уже реализован в моем коде).

Также используется альтернативный способ получения виджетов без официального выбора, который работает, но требует, чтобы приложение было системным приложением для разрешения BIND_APPWIDGET.

Кто-нибудь тоже испытал эту проблему и, возможно, нашел обходное решение или решение?

благодаря

Вот код:

public static void selectWidget(AppWidgetHost appWidgetHost, final Activity activity) { try { int appWidgetId = appWidgetHost.allocateAppWidgetId(); Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); addEmptyData(pickIntent); activity.startActivityForResult(pickIntent, R.id.REQUEST_PICK_APPWIDGET); } catch (ActivityNotFoundException e) { activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, activity.getString(R.string.widget_config_no_activity), Toast.LENGTH_SHORT).show(); } }); } } /** * This avoids a bug in the com.android.settings.AppWidgetPickActivity, which is used * to select widgets. This just adds empty extras to the intent, avoiding the bug. See * more: http://code.google.com/p/android/issues/detail?id=4272 */ private static void addEmptyData(Intent pickIntent) { ArrayList customInfo = new ArrayList(); pickIntent.putParcelableArrayListExtra(AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo); ArrayList customExtras = new ArrayList(); pickIntent.putParcelableArrayListExtra(AppWidgetManager.EXTRA_CUSTOM_EXTRAS, customExtras); } 

Вот стоп-лосс:

  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.AppWidgetPickActivity}: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-1280x960/ic_launcher_calendar.png from drawable resource ID #0x7f02007e at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250) at android.app.ActivityThread.access$800(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5105) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) at dalvik.system.NativeStart.main(Native Method) Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-1280x960/ic_launcher_calendar.png from drawable resource ID #0x7f02007e at android.content.res.Resources.loadDrawable(Resources.java:2156) at android.content.res.Resources.getDrawableForDensity(Resources.java:789) at com.android.settings.AppWidgetPickActivity.createItem(AppWidgetPickActivity.java:139) at com.android.settings.AppWidgetPickActivity.createItem(AppWidgetPickActivity.java:47) at com.android.settings.AppWidgetLoader.putAppWidgetItems(AppWidgetLoader.java:145) at com.android.settings.AppWidgetLoader.putInstalledAppWidgets(AppWidgetLoader.java:209) at com.android.settings.AppWidgetLoader.getItems(AppWidgetLoader.java:182) at com.android.settings.AppWidgetPickActivity.getItems(AppWidgetPickActivity.java:92) at com.android.settings.ActivityPicker.onCreate(ActivityPicker.java:143) at com.android.settings.AppWidgetPickActivity.onCreate(AppWidgetPickActivity.java:70) at android.app.Activity.performCreate(Activity.java:5275) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)            at android.app.ActivityThread.access$800(ActivityThread.java:139)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)            at android.os.Handler.dispatchMessage(Handler.java:102)            at android.os.Looper.loop(Looper.java:136)            at android.app.ActivityThread.main(ActivityThread.java:5105)            at java.lang.reflect.Method.invokeNative(Native Method)            at java.lang.reflect.Method.invoke(Method.java:515)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)            at dalvik.system.NativeStart.main(Native Method) Caused by: java.io.FileNotFoundException: res/drawable-xhdpi-1280x960/ic_launcher_calendar.png at android.content.res.AssetManager.openNonAssetNative(Native Method) at android.content.res.AssetManager.openNonAsset(AssetManager.java:415) at android.content.res.Resources.loadDrawable(Resources.java:2147)            at android.content.res.Resources.getDrawableForDensity(Resources.java:789)            at com.android.settings.AppWidgetPickActivity.createItem(AppWidgetPickActivity.java:139)            at com.android.settings.AppWidgetPickActivity.createItem(AppWidgetPickActivity.java:47)            at com.android.settings.AppWidgetLoader.putAppWidgetItems(AppWidgetLoader.java:145)            at com.android.settings.AppWidgetLoader.putInstalledAppWidgets(AppWidgetLoader.java:209)            at com.android.settings.AppWidgetLoader.getItems(AppWidgetLoader.java:182)            at com.android.settings.AppWidgetPickActivity.getItems(AppWidgetPickActivity.java:92)            at com.android.settings.ActivityPicker.onCreate(ActivityPicker.java:143)            at com.android.settings.AppWidgetPickActivity.onCreate(AppWidgetPickActivity.java:70)            at android.app.Activity.performCreate(Activity.java:5275)            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2250)            at android.app.ActivityThread.access$800(ActivityThread.java:139)            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1200)            at android.os.Handler.dispatchMessage(Handler.java:102)            at android.os.Looper.loop(Looper.java:136)            at android.app.ActivityThread.main(ActivityThread.java:5105)            at java.lang.reflect.Method.invokeNative(Native Method)            at java.lang.reflect.Method.invoke(Method.java:515)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)            at dalvik.system.NativeStart.main(Native Method) 

Похоже, мне удалось решить проблему на Android 4.1 и выше (API 16), используя AppWidgetManager.ACTION_APPWIDGET_BIND Intent. По какой-то причине Google заявляет, что мы должны добавить разрешение BIND_APPWIDGET для AndroidManifest.xml чтобы это работало, но оно работает для меня в любом случае (протестировано на нескольких устройствах). Я использую метод bindAppWidgetIdIfAllowed чтобы проверить, нужно ли мне запрашивать привязку или нет.

Я до сих пор не знаю, как связать виджеты до Android 4.1, даже с отражением bindAppWidgetId . Это достаточно хорошо для меня, но я соглашусь на любой другой ответ с решением для предварительного JellyBean (Android ниже 4.1)

Intereting Posts
Прокси-сервер Ориентация устройств Android – это пейзаж, но датчики ведут себя как ориентация Портрет Android – добавление элемента в пользовательское listview при нажатии кнопки Как вы можете прокручивать LinearLayout? SDK Samsung Pass (fingerprint) – не может использовать пароль как резерв на устройствах Galaxy 6 DataAPI намного медленнее, чем MessageAPI? Проблема с интерполяцией панели инструментов с помощью библиотеки поддержки дизайна Android Как избежать множественных экземпляров фрагментов в Activity после приложения убито и возобновлено? Использование андроидального надувания вне onCreateView Приложение для Android, подключающееся к веб-сервису – не работает Как группировать элементы из базы данных и отображать их – Android Как обмениваться местоположением, например whatsapp? Вибрация onclick Как рисовать линию в разных шаблонах с использованием холста? Щелчок по списку не работает с флажками Android