4

设备:安卓6.0.1

我写了一个应用程序,WRITE_EXTERNAL_STORAGE在清单中使用权限,安装这个应用程序,然后从设置中打开这个应用程序的存储权限。

adb shell
:/ # ps | grep com.amida.test
u0_a199   6722  477   872572 41084 SyS_epoll_ b6c89c74 S com.amida.test
:/ # cat /proc/6722/status
Name:    com.amida.test
State:    S (sleeping)
Tgid:    6722
Ngid:    0
Pid:    6722
PPid:    477
TracerPid:    0
Uid:    10199    10199    10199    10199
Gid:    10199    10199    10199    10199
FDSize:    256
Groups:    9997 50199

问题:我认为groups应该有1015。但是在那儿找不到1015,为什么?

根据 :#define AID_SDCARD_RW 1015

更多信息:

在 Android pre-M 中,从 /etc/permissions/platform.xml 中,我们可以找到以下信息:

    <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
    <group gid="sdcard_r" />
    <group gid="sdcard_rw" />
</permission>

#define AID_SDCARD_RW     1015

如果应用程序使用权限“android.permission.WRITE_EXTERNAL_STORAGE”,则应用程序的进程有组:1015。(根据 android_filesystem_config.h

但在 Android M 上,首先,我找不到权限(WRITE_EXTERNAL_STORAGE)和 gid 映射配置。因为 sdcard 中的文件属于 sdcard_rw 组,那么应用程序如何读写 sdcard?(我认为Android使用Linux权限系统来读写文件,对吧?)

4

0 回答 0