【问题标题】:How does the content provider uri work?内容提供者 uri 是如何工作的?
【发布时间】:2013-05-29 02:37:27
【问题描述】:

我研究 ContentProviders 已经有一段时间了,但我仍然无法理解 Uri 的工作原理。

content://app_name/路径/id

当指定路径时,如何访问与该路径对应的表? 似乎您需要用该路径标记表。是这样吗?

【问题讨论】:

    标签: android uri android-contentprovider


    【解决方案1】:

    你是对的谷歌文档在这一点上不是很清楚:

    首先:您必须为自定义提供者定义权限: http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI

    <provider
         android:name=".ProviderDemo"
         android:authorities="com.foo.android.providerdemo" />
    

    第二:查询提供者时使用此权限: http://developer.android.com/guide/topics/providers/content-provider-creating.html#ContentURI

     //query all items
     getContentResolver().query("content://com.foo.android.providerdemo/",...)
    
     //query a single item
     getContentResolver().query("content://com.foo.android.providerdemo/idOfItem>",...)
    
     //query a view
     getContentResolver().query("content://com.foo.android.providerdemo/<idOfView>/",...)
    

    【讨论】:

      【解决方案2】:

      为帮助您选择对传入内容 URI 采取的操作,提供程序 API 包含便利类 UriMatcher,它将内容 URI“模式”映射到整数值。您可以在 switch 语句中使用整数值,为内容 URI 或匹配特定模式的 URI 选择所需的操作。

      【讨论】:

        【解决方案3】:

        我的困惑源于缺乏 SQLite 知识。我不知道一个数据库包含许多表而不仅仅是一张表。现在我意识到 Uri 的权限必须带您到数据库,然后路径将带您到正确的表。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多