2

我一直在研究 ContentProviders 一段时间,但我仍然无法理解 Uri 的工作原理。

内容://app_name/路径/id

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

4

3 回答 3

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>/",...)
于 2013-05-28T05:33:22.970 回答
0

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

于 2013-05-28T05:37:58.053 回答
0

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

于 2013-05-28T18:37:27.170 回答