Запрос поставщика контента не соответствует правильному поставщику контента в библиотеке Android - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь создать класс поставщика контента в библиотеке для обмена данными между приложениями. Тогда каждое приложение может поместить что-то вроде следующего в свой манифест:

<provider android:name="com.pkg.lib.ContentProviderExtension" android:authorities="com.somecommonprefix.appnamecontentprovidername />

Затем я перебираю всех поставщиков контента, чтобы получить подходящих поставщиков контента с соответствующим префиксом.

Затем я могу запросить любой из них, чтобы получить / вставить данные.

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

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

Пример: Сначала я запрашиваю контент-провайдера, живущего в app1:

Uri uri = Uri.parse("content://somecommonprefix.app1/data");
Cursor cursor = managedQuery(uri, null, mode, null, null);

Когда я обращаюсь к провайдеру контента app2:

Uri uri = Uri.parse("content://somecommonprefix.app2/data");
Cursor cursor = managedQuery(uri, null, mode, null, null);

Он снова попадет в app1. Я получаю такое же поведение при использовании getContentResolver (). Query (…), а также

Я тестирую на Galaxy S II.

Я не могу найти никаких документов, говорящих, что я не могу этого сделать. Кто-нибудь знает какие-нибудь обходные пути?

...