簡體   English   中英

為Android創建和使用ContentProvider

[英]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使用所謂的ContentResolverContentProvider進行通信,而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用於調用ContentProviderCONTENT_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.providerde.harm.android.couchone.client

我認為這個鏈接與問題主題有關。 如何實現自定義內容提供程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM