3

當我打電話一個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

這些項目:

Android使用所謂ContentResolverContentProvider這又處理持久性的功能進行溝通 - 訪問數據庫。

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_URIContentProvider

  • 我是否缺少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」。

回答

3

我已經解決了這個問題:

這兩個項目都有相同的包結構。我將de.harm.android.couchone更改爲de.harm.android.couchone.providerde.harm.android.couchone.client

相關問題