Anbieterinformationen für benutzerdefinierten Anbieter konnten nicht gefunden werden

7

Ich habe so ziemlich alles gelesen, was es hier in diesem Thema zu finden gibt, und komme nicht darüber hinweg.

Ich habe eine einfache App, die mit MainActivity beginnt, meine Content Provider ist korrekt in AndroidManifest.xml definiert, die ContentProvider Klasse scheint in Ordnung zu sein ... das wurde auf einem Nexus i9250 mit 4.3 und einem Asus getestet Memo Pad mit 4.2.1 sowie VDevices mit Jelly Bean. Die App läuft in jedem Fall und stürzt nicht ab. Das einzige, was LogCat mir gibt, ist "Failed to find provider info for de.somename.provider" an dem Punkt, an dem eines meiner Fragmente versucht, Content Provider abzufragen und einen Cursor zu bekommen. Hier der Code:

AndroidManifest.xml

%Vor%

%Vor%

hvkContentProvider.java

%Vor%

}

HdwFragment.java

%Vor%

}

Die Methode: insertSomeFunctions () die ich weggelassen habe, da es hier keinen Unterschied macht, werde ich so schnell wie möglich ein Kopfgeld geben. Wirklich müssen Sie dies erledigen.

    
M.Bennett 27.08.2013, 11:10
quelle

2 Antworten

17
%Vor%

Von der Referenzseite auf <provider> : Link

  

Android: Behörden: ...... zu vermeiden   Konflikte, Autorisierungsnamen sollten eine Java-ähnliche Namenskonvention verwenden   (z. B. com.example.provider.cartoonprovider ). Normalerweise ist es das   Name der ContentProvider-Unterklasse, die den Provider implementiert.

In Ihrem Fall sollte android:authorities den Wert: de.somename.provider.hvkContentProvider haben.

  

android: name: ...... Der Name der Klasse, die den Inhalt implementiert   Provider, eine Unterklasse von ContentProvider. Dies sollte ein vollständig sein   qualifizierter Klassenname (z. B.   "com.beispiel.project.TransportationProvider"). Wie auch immer   Kurzform, wenn das erste Zeichen des Namens ein Punkt ist, ist es   an den Paketnamen angehängt, der im Element angegeben ist.

Wenn Sie also package im manifest -Tag von AndroidManifest.xml definieren, stellen Sie sicher, dass hvkContentProvider in diesem Paket ist. Ändern Sie andernfalls android:name=".hvkContentProvider" in android:name="de.somename.hvk3.hvkContentProvider" oder your.package.name.hvkContentProvider

    
Vikram 30.08.2013, 20:37
quelle
4

Versuchen Sie, den vollständig qualifizierten Pfad in android:authorities zu verwenden und dabei de.somename.provider zu ersetzen. mit de.somename.provider.hvkContentProvider in, so dass es wie folgt aussieht.

%Vor%

Sie können diese

angeben     
Ritesh Gune 30.08.2013 10:47
quelle