Не удалось найти информацию о поставщике для "ContentProvider"
у меня есть проблема, которую я просто не могу понять. Я использую Eclipse для создания собственного поставщика контента, но продолжаю получать следующую ошибку:
[..] Ошибка / ActivityThread (1051): не удалось найти информацию о поставщике для мой.пакет.поставщик.countrycontentprovider
код найден здесь:http://codepad.org/Rx00HjHd
основные части:
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" />
я добавил поставщика в манифест и вернул true из the
6 ответов
Я смог воспроизвести вашу проблему, когда я переместил
к счастью, эта проблема обнаружена Android Lint, начиная с ADT 20.
Он работал для меня только после указания полного пути в Authorities
тег в файле манифеста (см. Пример кода SearchableDictionary в SDK).
<provider android:name=".DictionaryProvider"
android:authorities="com.example.android.searchabledict.DictionaryProvider">
установка экспортированного атрибута в true в теге поставщика в манифесте работала для меня:
android:exported="true"
согласно documentation(http://developer.android.com/guide/topics/manifest/provider-element.html#exported), экспорт требуется только в том случае, если поставщик должен быть доступен для других приложений. Но это единственное решение, которое сработало для меня.
android: authorities= в XML-файле находится content authority, который находится в классе контракта, который вы, вероятно, создали. Для создания URI базового содержимого в схему добавляется центр управления содержимым. Простой английский, обратный домен, который вы использовали, чтобы сделать ваше приложение no caps here com.домен.подводная лодка.appName.
android: name-это папка плюс класс, который называется вашим провайдером, не забудьте точку .папка.ProviderClassContentAuthorityIsIn.
надеюсь, это поможет :)
у вас есть заглавная буква, А на другой строке одна строчная буква.
android: name= " my.пакет.поставщик.-C-ountryContentProvider" android: authorities= " my.пакет.поставщик.-c-ountrycontentprovider"
это должно быть везде одинаково.
public static final String PROVIDER =
"my.package.provider.countrycontentprovider";
зарегистрируйте поставщика в Манифесте Android
<provider
android:authorities="your_content_authority"
android:name="yourProviderClass"/>