3

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:

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".

Antwort

3

Ich habe dieses Problem gelöst:

Beide Projekte hatten die gleiche Paketstruktur. Ich änderte de.harm.android.couchone zu de.harm.android.couchone.provider und de.harm.android.couchone.client.

Verwandte Themen