Попытка отправить данные в виджет приложения - PullRequest
2 голосов
/ 21 декабря 2009

Я работаю над виджетом, который будет изменять данные, которые он отображает, когда пользователь нажимает на него. Обычно с этим легко справиться, но мой поставщик виджетов приложения обрабатывает несколько экземпляров виджетов, которые имеют разные наборы данных. При этом, когда пользователь нажимает на виджет, запускается PendingIntent, который вызывает метод changeData (). Внутри намерения, которое запускается, я храню идентификатор виджета, поэтому changeData () знает, какой набор данных использовать. Сначала я сохранял идентификаторы виджетов в дополнительных функциях намерения, но я обнаружил, что есть ошибка в том, как виджеты 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 (), который обычно вызывается при нажатии виджета, больше не вызывается. Есть ли что-то, что мне нужно настроить в файле Android Manifest для этой работы должным образом, или я что-то делаю совершенно неправильно?

Спасибо, что нашли время прочитать это, Tony

1 Ответ

1 голос
/ 21 декабря 2009

Вы должны соответствовать

<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

Объект Intent, который содержит URI, но не имеет типа данных (и тип не может быть выведен из URI), проходит тест, только если его URI совпадает с URI в фильтре, и фильтр также не указывает тип. Это будет иметь место только для URI, таких как mailto: и tel:, которые не относятся к фактическим данным.

...