Android: добавление данных в Intent не загружается.

У меня есть виджет, который должен вызвать действие основного приложения, когда пользователь нажимает на тело виджета. Моя настройка работает для одного экземпляра виджета, но для второго экземпляра того же виджета PendingIntent повторно используется, и в результате жизненно важная информация, которую я отправляю как дополнительная, перезаписывается для первого экземпляра. Поэтому я решил, что должен передать идентификатор виджета как данные Intent однако, как только я добавлю Intent#setData я увижу в журнале, что 2 отдельных намерения будут уволены, но Activity не сможет его забрать, так что в основном активность не будет возникать и Ничего не происходит (нет ошибки или предупреждающего эфира) Вот как настроено действие в манифесте:

  <activity android:name=".SearchResultsView" android:label="@string/search_results" <intent-filter> <action android:name="bostone.android.search.RESULTS" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

И вот код, который настроен для обработки щелчка

 Intent di = new Intent("bostone.android.search.RESULTS"); di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // if line below is commented out - the Activity will start di.setData(ContentUris.withAppendedId(Uri.EMPTY, widgetId)); di.putExtra("URL", url); views.setOnClickPendingIntent(R.id.widgetContent, PendingIntent.getActivity(this, 0, di, 0)); 

Основное приложение и виджет упакованы в виде 2 отдельных APK в своем собственном пакете, а Manifest

Solutions Collecting From Web of "Android: добавление данных в Intent не загружается."

Я думаю, что вам нужен <data> в вашем <intent-filter> чтобы вы стреляли, чтобы соответствовать зарегистрированному фильтру намерений.

https://developer.android.com/guide/topics/manifest/data-element.html

Также может возникнуть проблема с использованием Uri.EMPTY. Я бы создал вашу собственную схему Uri, так что ваш вызов setData () выглядит примерно так:

 di.setData(Uri.withAppendedPath(Uri.parse("droidln://widget/id/"), String.valueOf(appWidgetId))); 

И ваш фильтр намерений будет выглядеть так:

  <intent-filter> <action android:name="bostone.android.search.RESULTS" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="droidln"/> </intent-filter>