Android ContentProvider读写权限

dav*_*ino 7 permissions android android-contentprovider

权限似乎没有任何区别......

在清单中,我只有一个<uses-permission>(permission.INTERNET),我有两个<permission>元素:

<permission android:name="myapp.permission.READ"
    android:permissionGroup="myapp.permission-group.MYAPP_DATA"
    android:label="@string/perm_read"
    android:description="@string/perm_read_summary"
    android:protectionLevel="signature" />

<permission android:name="myapp.permission.WRITE"
    android:permissionGroup="myapp.permission-group.MYAPP_DATA"
    android:label="@string/perm_write"
    android:description="@string/perm_write_summary"
    android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)

然后是提供者:

    <provider
        android:name=".data.DataProvider"
        android:multiprocess="true"
        android:authorities="myapp.data.DataProvider"
        android:readPermission="myapp.permission.READ"
        android:writePermission="myapp.permission.WRITE" />
Run Code Online (Sandbox Code Playgroud)

现在,我可以正常访问ContentProvider,它运行得很好.

  1. 如果我没有强制执行,为什么它会起作用<uses-permission>?在宣布提供者的应用程序中是否也不需要它?

  2. 添加<uses-permission>我自己的权限没有区别.这些权限甚至没有在应用信息中列出.为什么?

ps:是的,我在这里读过关于SO和Google Groups的问题(也是Hackborn回答的问题).我跟着(你可以看到)到处都有什么描述,但是......你可以说它在起作用,但关键是我想要看到它什么时候没有.

Com*_*are 6

在宣布提供者的应用程序中是否也不需要它?

AFAIK,您自己的应用程序拥有您声明的所有自己的权限.第三方需要<uses-permission>.

这些权限甚至没有在应用信息中列出.为什么?

往上看.

你可以说它正在发挥作用,但关键是我想看到它什么时候没有.

在自己的包中编写另一个应用程序来测试您的权限.