android内容提供商AUTHORITIES

时间:2014-06-12 16:41:16

标签: android android-contentprovider authority

内容提供商当局的原因是什么?

除了我必须在清单中声明它们之外,我是如何/为什么要使用它们?

我试图在这个问题上做作业,但却找不到关于这个主题的体面,有凝聚力的讨论。 这是我能找到的最好的(除了我自己的Android开发的四本书):

  1. https://stackoverflow.com/search?q=content+provider+authority
  2. Content Providers, Authority and and URI matching
  3. Get a list of available Content Providers
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html

2 个答案:

答案 0 :(得分:19)

管理局用于与特定内容提供商进行交互,这意味着它必须是唯一的。这就是为什么good practice将其声明为您的域名(反过来)加上包含提供者的包的名称,这种方式不太可能是其他开发人员创建一个内容提供者声明相同权限的应用程序。

您在清单中声明它,以便您的应用和其他应用(如果您允许)可以操作 数据通过您的内容提供商以uri的形式出现:

content://authority-name/data-in-the-provider

它与http urls中的域类似:

http://domain-name/data-in-the-site

答案 1 :(得分:1)

我也在寻找解释并添加到ILovemyPoncho提供的答案中,我点击了这个特别answer并引用:

  
    

什么是android:当局要求的?

  
     

供应商的系统范围唯一标识符。或者更好的全球   独特。所有提供商都在系统中注册,他们需要   是唯一的或第二个想要使用相同名称的应用程序不能   安装。

     

您最后使用该字符串通过您的提供商进行通信   像Uri一样

     

Uri uri = Uri.parse(“content://”+“your.authoritiy.string”)

让我们这样说:有一只看不见的牌可以方便您对应用的ContentProvider的请求。

例如:

    Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values);

基本上,您在Android操作系统中所说的是插入数据,其中URI包含您在XML中定义的权限。操作系统将搜索此特定内容提供商并将请求发送给它。您将调用ContentProvider上的insert方法,并且必须匹配URI以相应地处理它。

此外,如果您是内容提供商是如此简单,以至于其他人也拥有类似的权限。我没有遇到过我提到的那两个问题,但我认为这不会令人愉快。

权限是确保操作系统了解哪个提供商将数据提供给请求的应用程序,并确保提供它的提供商。