Какая польза от
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
для следующих Intent
в классе AppWidgetProvider (см. Код ниже)
Согласно книге CommonsWare причина:
Пока у вашего приложения есть доступ к вашему объекту класса RemoteViewsService, у хоста виджета приложения нет, и поэтому нам нужно что-то, что будет работать через границы процесса. Вы можете добавить свой собственный в RemoteViewsService и использовать Intent, основанный на этом, но это сделает ваш сервис более публичным, чем вы хотели бы.
Источник: Руководство занятого кодера по разработке Android
https://commonsware.com/Android/
Но когда я удаляю эту строку, ничего не меняется. Виджет все еще работает.
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
[...]
Intent serviceIntent = new Intent(context, WidgetService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.stack_view, serviceIntent);
views.setEmptyView(R.id.stack_view, R.id.empty_view);
[...]
appWidgetManager.updateAppWidget(appWidgetId, views);
}