Wenn ich ein Android-Contentprovider nennen erhalte ich die folgende Ausnahme:Erstellen und mit Contentprovider für Android
java.lang.RuntimeException: Kann nicht Start-Aktivität ComponentInfo {de.harm.android.couchone/de .harm.android.couchone.CouchContactClient}: java.lang.IllegalArgumentException: Unknown URL Inhalt: //de.harm.android.couchone.provider/test2
Dies sind die Projekte:
- https://github.com/der-harm/CouchOneProvider
- .../CouchOneContacts
Android nutzt die ContentResolver
mit ContentProvider
zu kommunizieren, so genannte was wiederum die Persistenz Funktionalität verarbeitet - Zugriff auf die Datenbank.
Die ContentProvider
registriert sich mit einem einzigartigen Uri. Die ContentResolver
ruft die ContentProvider
mit dieser Uri und übergibt zusätzliche Daten, wie eine SQL-Abfrage Zeichenfolge und/oder Daten gespeichert werden.
Im CouchOneProvider
/AndroidManifest.xml
Ich habe folgendes:
<provider android:authorities="de.harm.android.couchone.provider"
android:name=".Provider" />
Der Anbieter nutzt
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, DB_Name, URI_COLLECTION);
uriMatcher.addURI(PROVIDER_NAME, DB_Name + "/#", URI_ENTITY);
}
und
public static boolean isCollectionUri(Uri uri) {
return uriMatcher.match(uri) == URI_COLLECTION;
}
die CONTENT_URI
vom ContentResolver
verwendet zu verarbeiten die anrufen ContentProvider
:
- Fehle ich Berechtigungen in beiden
AndroidManifest.xml
? - Fehle ich die Autorität in
AndroidManifest.xml
falsch? - Ist die
CONTENT_URI
falsch?
Update:
Ich habe weitere Informationen:
Logcat sagt:
Fehlgeschlagen Anbieter Info für de.harm.android.couchone.provider
finden
Diese Shoul d der Ausgangspunkt sein. Aber bis jetzt konnte ich keine Lösung finden.
Die vollständig qualifizierten Klassennamen der ContentProvider
Implementierung sind:
de.harm.android.couchone.Provider
In AndroidManifext.xml
genau dies als Behörde angegeben wird, mit Ausnahme des Namen Fall zu senken, aber dies sollte in Ordnung sein.
Der Paketname ist zuvor in der XML-Datei definiert, daher sollte ".Provider" auch in Ordnung sein.
Wie in Ausnahme zu sehen, ruft der Client:
content://de.harm.android.couchone.provider/test2
Logcats Antwort lautet:
Fehlgeschlagen Anbieter Info für de.harm.android.couchone.provider
finden
Ich sehe nicht, was fehlt, vielleicht ist es Eclipse oder Emulator Problem?
Ich installiere den Anbieter als "Projekt als Android-Anwendung ausführen".