【问题标题】:How could I open my content provider to all applications within an android devices?如何向 android 设备中的所有应用程序打开我的内容提供程序?
【发布时间】:2015-05-03 00:29:07
【问题描述】:

我试图创建一个内容提供程序,为系统中的所有应用程序提供服务;运行其他应用程序读取时不断收到安全权限错误。

谁能帮我看一下如何在Manifest 中编写读取权限的示例,因为即使在PRC 中我也无法通过VPN 访问developer.android.com ......很遗憾......非常感谢......

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:

    引用开发者文档:

    内容提供者权限 提供者的应用程序可以指定其他应用程序必须具有的权限才能访问提供者的数据。这些权限确保用户知道应用程序将尝试访问哪些数据。根据提供者的要求,其他应用程序请求他们需要的权限以访问提供者。最终用户在安装应用程序时会看到请求的权限。

    如果提供者的应用程序未指定任何权限,则其他应用程序无权访问提供者的数据。但是,提供者应用程序中的组件始终具有完全的读写访问权限,而与指定的权限无关。

    因此,您需要在清单中声明内容提供者的权限,例如:

      <permission android:name="com.your.app.permission.READ_MY_PROVIDER"
        android:label="@string/read_permission"
        android:description="@string/read_permission_description"
        android:protectionLevel="normal" />
    

    作为&lt;application&gt; 元素的子元素。如果您希望所有应用都可以访问它,则保护级别应该是 normal,如果它应该只能由您使用相同密钥签名的应用访问,则应该是 signature

    然后像这样将该权限添加到提供者:

        <provider
          ...
          android:readPermission="com.your.app.permission.READ_MY_PROVIDER"
          ... />
    

    然后,在其他应用中请求相同的权限,它们将能够访问您的内容提供者:

    <uses-permission android:name="com.your.app.permission.READ_MY_PROVIDER">
    

    【讨论】:

    • “正常”权限在其他应用使用不同证书签名时不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    相关资源
    最近更新 更多