Pas réussi à trouver de fournisseur pour info 'ContentProvider'
J'ai un problème que je n'arrive pas à comprendre. J'utilise Eclipse pour créer mon propre Fournisseur de Contenu mais reçois l'erreur suivante:
[ .. ]//ERREUR de ActivityThread(1051): impossible de trouver le fournisseur d'info pour
mon.package.fournisseur de.countrycontentprovider
Code trouvé ici: http://codepad.org/Rx00HjHd
Parties principales:
public class CountryContentProvider extends ContentProvider {
public static final String PROVIDER =
"my.package.provider.countrycontentprovider";
public static final Uri CONTENT_URI =
Uri.parse("content://" + PROVIDER + "/country");
//...
@Override
public boolean onCreate() { return true; }
//...
}
//from my activity
ContentResolver resolver = getContentResolver();
Cursor c = resolver.query(CountryContentProvider.CONTENT_URI,
null, null, null, null);
//AndroidManifest.xml
<provider
android:name="my.package.provider.CountryContentProvider"
android:authorities="my.package.provider.countrycontentprovider" />
J'ai ajouté le fournisseur pour le manifeste et le retour véritable de la onCreate
fonction. J'utilise le CountryContentProvider.CONTENT_URI
dans mon activité afin d'obtenir le Contenu de mon fournisseur, mais je reçois ce message d'erreur. J'ai supprimé et ajouté le code à trois reprises (en cas d'éclipse fondre) en vain.
Quelque chose doit m'échapper. Quelqu'un peut me pointer dans la bonne direction?
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure de reproduire votre problème quand j'ai déménagé <fournisseur> de la <application>...</application> tag. Eclipse n'a pas dit quelque chose comme une erreur ou un avertissement.
Heureusement, ce problème est détecté par Android Peluches à partir de l'outil ADT 20.
<provider>
balise doit être placée à l'intérieur de<application>
tag.Il a travaillé pour moi seulement après avoir spécifié le chemin d'accès complet dans
Authorities
balise dans le fichier de manifeste (voir SearchableDictionary exemple de code dans le SDK).Réglage de la exporté attribut de vrai dans le fournisseur de balise dans le manifeste a fonctionné pour moi :
Selon la documentation(http://developer.android.com/guide/topics/manifest/provider-element.html#exported), l'exportation est requis uniquement si le fournisseur est disponible pour les autres applications. Mais c'est la seule solution qui a fonctionné pour moi.
Android:les autorités de= dans le fichier XML est le contenu de l'autorité qui se trouve dans la classe de contrat, que vous avez probablement construit. Le contenu de l'autorité est ajouté au système pour faire le contenu de la base de URI. Anglais courant, à l'inverse de domaine que vous avez utilisé pour faire votre application pas de bouchons de ici com.domaine.sous.appName.
Android:name est le nom de dossier plus de classe à votre fournisseur est nommé, n'oubliez pas le point .dossier.ProviderClassContentAuthorityIsIn.
Espère que cela aide 🙂
vous disposez d'un capital et de la lettre, sur l'autre ligne, une lettre minuscule.
android:name= "mon.package.le fournisseur.-C-ountryContentProvider"
android:les autorités="mon.package.le fournisseur.-c-ountrycontentprovider"
il doit être le même partout.
my.package.provider.countrycontentprovider
). Et les noms de classe doivent correspondre -my.package.provider.CountryContentProvider
. Donc je ne pense pas que ce soit le problème.Enregistrer votre fournisseur dans le Manifeste Android