[英]Creating & using ContentProvider for android
當我調用Android ContentProvider時,我得到以下異常:
java.lang.RuntimeException:無法啟動活動ComponentInfo {de.harm.android.couchone / de.harm.android.couchone.CouchContactClient}:java.lang.IllegalArgumentException:未知的URL內容://de.harm.android.couchone .provider / TEST2
這些是項目:
Android使用所謂的ContentResolver
與ContentProvider
進行通信,而ContentProvider
又處理持久性功能 - 訪問數據庫。
ContentProvider
使用唯一的Uri注冊自己。 ContentResolver
使用此Uri調用ContentProvider
並傳遞其他數據,如SQL查詢字符串和/或要保存的數據。
在CouchOneProvider
/ AndroidManifest.xml
我有以下內容:
<provider android:authorities="de.harm.android.couchone.provider"
android:name=".Provider" />
提供者使用
static {
uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
uriMatcher.addURI(PROVIDER_NAME, DB_Name, URI_COLLECTION);
uriMatcher.addURI(PROVIDER_NAME, DB_Name + "/#", URI_ENTITY);
}
和
public static boolean isCollectionUri(Uri uri) {
return uriMatcher.match(uri) == URI_COLLECTION;
}
處理ContentResolver
用於調用ContentProvider
的CONTENT_URI
:
AndroidManifest.xml
中都缺少權限? AndroidManifest.xml
錯誤地定義了權限嗎? CONTENT_URI
錯了嗎? 更新:
我有其他信息:
Logcat說:
無法找到de.harm.android.couchone.provider的提供商信息
這應該是起點。 但到目前為止我找不到任何解決方案。
ContentProvider
實現的完全限定類名是:
de.harm.android.couchone.Provider
在AndroidManifext.xml
這被指定為權限,除了名稱為小寫,但這應該沒問題。
包名稱先前在xml文件中定義,因此“.Provider”也應該沒問題。
至於在異常中看到,客戶端調用:
content://de.harm.android.couchone.provider/test2
Logcats的答案是:
無法找到de.harm.android.couchone.provider的提供商信息
我不知道缺少什么,也許是Eclipse或模擬器問題?
我將提供程序安裝為“作為Android應用程序運行項目”。
我已經解決了這個問題:
兩個項目都具有相同的包結構。 我將de.harm.android.couchone
更改為de.harm.android.couchone.provider
和de.harm.android.couchone.client
。
我認為這個鏈接與問題主題有關。 如何實現自定義內容提供程序 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.