Android-приложение AppWidget не добавляет на рабочий стол на Lollipop

Я разработал приложение, которое показывает канал новостей на виджете домашнего экрана. Все в порядке на устройствах Android до Lollipop в результате следующего сценария:

  • Пользователь вводит экран виджетов своих пусковых установок для выбора / добавления конкретного виджета
  • Пользователь нажимает на MyNewsWidget, чтобы добавить их на главный экран
  • Вызывается конфигурирование, поэтому пользователь может выбирать из разных источников новостей
  • Пользователь нажимает кнопку «Сохранить» внутри активности конфигурации, затем действие должно заканчиваться, а MyNewsWidget должен быть добавлен на главный экран.

Я тестирую свое приложение на устройстве LG Nexus 5, но когда я нажимаю, чтобы добавить мой виджет на главный экран после завершения работы по настройке, виджет не добавляется на главный экран.

Вот мой код для Intent внутри действия Configuration:

int[] appWidgetIds = new int[]{mWidgetId}; Intent intent = new Intent(WidgetResourcesActivity.this, NewsWidgetProvider.class); intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds); sendBroadcast(intent); setResult(RESULT_OK, intent); finish(); 

Кроме того, это мой код внутри класса WidgetProvider:

  @Override public void onReceive(Context context, Intent intent) { //I got this result on pre-Lollipop android devices "Action is: ACTION_APPWIDGET_UPDATE" if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_UPDATE)) { int[] appWidgetIds = intent.getExtras().getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS); for (int widgetId : appWidgetIds) { if (!isWidgetAdded(context, widgetId)) { Intent widgetIntent = new Intent(Intent.ACTION_MAIN); widgetIntent.setClass(context, WidgetResourcesActivity.class); widgetIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); widgetIntent.putExtra(WidgetResourcesActivity.EXTRA_WIDGET_ID, widgetId); context.startActivity(widgetIntent); PendingIntent pendingIntent = PendingIntent.getActivity(context, widgetId, widgetIntent, PendingIntent.FLAG_UPDATE_CURRENT); } else { AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); int[] widgetIds = new int[]{widgetId}; onUpdate(context, appWidgetManager, widgetIds); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget); updateButtonsStatus(remoteViews, 0, mFeedsCount); AppWidgetManager.getInstance(context).updateAppWidget(appWidgetIds, remoteViews); } } return; } //Here is my trouble . . . //Unfortuantely, I got this result on Lollipop android devices "Action is: ACTION_APPWIDGET_DELETED" !! Why? if (intent.getAction().equals(AppWidgetManager.ACTION_APPWIDGET_DELETED)) { if (BuildConfig.DEBUG) Log.e(TAG, "action : " + intent.getAction()); removeWidgetId(context, intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID)); return; } super.onReceive(context, intent); if (intent.getExtras() == null) return; int widgetId = intent.getExtras().getInt(EXTRA_WIDGET_ID); if (BuildConfig.DEBUG) Log.e(TAG, "action : " + intent.getAction() + " id : " + intent.getExtras().getInt(EXTRA_BUTTON_ID)); if (intent.getExtras().getInt(EXTRA_BUTTON_ID) == R.id.widget_arrow_back) { mIndex = intent.getExtras().getInt(EXTRA_FEED_INDEX); if (mIndex > 0) { mIndex--; if (BuildConfig.DEBUG) Log.e(TAG, "currentIndex : " + mIndex); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget); updateButtonsStatus(remoteViews, mIndex, mFeedsCount); updateWidget(context, remoteViews, mIndex, widgetId); handleWidgetBackButton(context, remoteViews, widgetId); handleWidgetNextButton(context, remoteViews, widgetId); } } if (intent.getExtras().getInt(EXTRA_BUTTON_ID) == R.id.widget_arrow_next) { mIndex = intent.getExtras().getInt(EXTRA_FEED_INDEX); if (mIndex < mFeedsCount - 1) { mIndex++; if (BuildConfig.DEBUG) Log.e(TAG, "currentIndex : " + mIndex); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget); updateButtonsStatus(remoteViews, mIndex, mFeedsCount); updateWidget(context, remoteViews, mIndex, widgetId); handleWidgetNextButton(context, remoteViews, widgetId); handleWidgetBackButton(context, remoteViews, widgetId); } } } 

К сожалению, предыдущий сценарий не работает на android Lollipop (5.0 и новее). Любая хорошая помощь будет высоко оценена.

Intereting Posts
Как выбрать контакты только из контактов google (а не facebook и т. Д.) С номерами телефонов? Как выйти из полноэкранного веб-приложения Как перемонтировать мой Android / систему как чтение и запись в сценарии bash с помощью adb? Android ускоряет использование процессора (и медленно!) Как сделать 10-дюймовый планшетный компьютер совместимым с 7-дюймовым планшетом в Android Измените цвет названия ActionMode android Фоновое приложение без ui Как установить время на устройство программно Android UI тест Отпечаток пальца с эспрессо Android-виджет: как изменить текст кнопки <Ваше приложение> имеет проблемы с сервисами Google Play. При использовании GoogleApiClient он всегда запускается onConnectionFailed Ориентация видеомагнитофона JavaCV не подходит в портретном режиме Android: FloatingActionButton не может быть создан Как открыть счетчик одним щелчком мыши, когда открыт другой счетчик Android SearchView на панели инструментов