Попытка отправить данные в виджет приложения
-
20-09-2019 - |
Вопрос
Я работаю над виджетом, который изменит данные, которые он отображает, когда пользователь нажимает на него. Обычно с этим легко справиться, но мой поставщик виджетов приложения обрабатывает несколько экземпляров виджетов, которые имеют разные наборы данных. С учетом вышесказанного, когда пользователь нажимает на виджет, запускается пенсионное вещество, которое вызывает метод mediceata (). Внутри запускаемого намерения я хранят идентификатор виджета, поэтому измененный () знает, какой набор данных использовать. Сначала я хранил идентификаторы виджетов в дополнениях к намерению, но я обнаружил, что есть ошибка в том, как виджеты Android обрабатывают виджеты виджета, так что теперь я пытаюсь сохранить виджет, передав URL -адрес с помощью метода setData () (форматированный Как контент: widgetid IE Содержание: 24 и т. Д.).
Вот как я настраиваю данные для PendingIntent:
Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA");
changeData.setData(Uri.parse("content:" + currentWidgetId));
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0);
Однако, как только я пытаюсь проверить это, метод Onrecieve (), который обычно вызывается, когда виджет больше не вызывается. Есть ли что -то, что мне нужно настроить в моем файле Manifest Android для этой работы должным образом, или есть что -то, что я делаю совершенно не так?
Спасибо, что нашли время прочитать это, Тони
Решение
Вам нужно соответствовать
<data android:scheme="content" />
или же
IntentFilter filter = new IntentFilter("com.tonycosentini.mintdroid.CHANGE_DATA");
filter.addDataScheme("content");
В вашем фильтре намерения.
Зависит от того, объявите фильтр в XML или Java.
http://developer.android.com/guide/topics/intents/intents-filters.html
Объект намерения, который содержит URI, но тип данных (и тип не может быть выведен из URI) проходит тест, только если его URI соответствует URI в фильтре, а фильтр также не указывает тип. Это будет иметь место только для URI, таких как Mailto: и Tel: которые не относятся к фактическим данным.