内容提供商uri是如何工作的



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

content://app_name/路径/id

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

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

首先:必须为自定义提供程序定义一个权限: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>/",...)

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

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

最新更新