设备:安卓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权限系统来读写文件,对吧?)