Когда я вызываю Android ContentProvider, я получаю следующее исключение:
java.lang.RuntimeException: невозможно
начать деятельность
ComponentInfo {de.harm.android.couchone / de.harm.android.couchone.CouchContactClient}:
java.lang.IllegalArgumentException:
Неизвестный URL
Содержание: //de.harm.android.couchone.provider/test2
Это проекты:
Android использует так называемый ContentResolver
для связи с ContentProvider
, который, в свою очередь, обрабатывает постоянные функции - доступ к базе данных.
ContentProvider
регистрируется с уникальным Uri. ContentResolver
вызывает ContentProvider
с этим Uri и передает дополнительные данные, такие как строка SQL-запроса и / или данные для сохранения.
В CouchOneProvider
/ AndroidManifest.xml
у меня есть следующее:
<provider android:authorities="de.harm.android.couchone.provider"
android:name=".Provider" />
Провайдер использует
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, DB_Name, URI_COLLECTION);
uriMatcher.addURI(PROVIDER_NAME, DB_Name + "/#", URI_ENTITY);
}
и
public static boolean isCollectionUri(Uri uri) {
return uriMatcher.match(uri) == URI_COLLECTION;
}
для обработки CONTENT_URI
, используемого ContentResolver
для вызова ContentProvider
:
- Мне не хватает разрешений в любом из
AndroidManifest.xml
?
- Я неправильно определяю авторитет в
AndroidManifest.xml
? 1046 *
- Является ли
CONTENT_URI
неправильным?
Обновление:
У меня есть дополнительная информация:
Logcat говорит:
Не удалось найти информацию о поставщике для
de.harm.android.couchone.provider
Это должно быть отправной точкой. Но пока я не смог найти никакого решения.
Полное имя класса реализации ContentProvider
:
de.harm.android.couchone.Provider
В AndroidManifext.xml
именно это указывается как полномочие, за исключением имени, которое должно быть в нижнем регистре, но это должно быть хорошо.
Имя пакета определено ранее в xml-файле, поэтому «.Provider» тоже должен быть в порядке.
Как видно из исключения, клиент вызывает:
content://de.harm.android.couchone.provider/test2
Logcats ответ:
Не удалось найти информацию о поставщике для de.harm.android.couchone.provider
Я не вижу, чего не хватает, возможно, это проблема Eclipse или эмулятора?
Я устанавливаю провайдера как «запуск проекта как приложения Android».