當我打電話一個Android的ContentProvider我得到以下異常:創建和使用的ContentProvider爲Android
了java.lang.RuntimeException:無法 開始活動 ComponentInfo {de.harm.android.couchone /日.harm.android.couchone.CouchContactClient}: java.lang.IllegalArgumentException異常: 未知的URL 內容://de.harm.android.couchone.provider/test2
這些項目:
- https://github.com/der-harm/CouchOneProvider
- .../CouchOneContacts
Android使用所謂ContentResolver
與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
調用的CONTENT_URI
ContentProvider
:
- 我是否缺少
AndroidManifest.xml
中的任何一個的權限? - 我在錯誤地定義
AndroidManifest.xml
中的權限? - 是
CONTENT_URI
錯?
更新:
我有額外的信息:
logcat的說:
未能找到 提供信息de.harm.android.couchone.provider
This shoul d是起點。但到目前爲止,我找不到任何解決方案。
的ContentProvider
實現的完全限定類名是:
de.harm.android.couchone.Provider
在AndroidManifext.xml
正是這一點被指定爲權威,除了名稱爲小寫,但是這應該是罰款。
軟件包名稱是以前在xml文件中定義的,所以「.Provider」也應該可以。
至於在異常中可以看出,客戶端調用:
content://de.harm.android.couchone.provider/test2
Logcats答案是:
未能找到de.harm.android.couchone.provider
供應商信息
我沒有看到缺少的東西,可能是Eclipse或模擬器問題?
我將提供程序安裝爲「run project as Android application」。