Android4.0应用开发中添加系统权限无法访问SD卡
今天在我么的机顶盒上移植我么公司的应用开发部门开发的一个多媒体管理应用的时候,发现插上SD卡后该应用无法读取SD卡中的内容。这个问题困扰了我好久,原先以为是应用开发部门的同事的问题,但是在其它的平台的上用的好好的。我就纳闷了,后来经过我仔细的询问才得知是因为他么在应用程序的AndroidMenifest.xml中添加了系统权限:sharedUserId,既然问题找到了这就好办了。
下面是具体的解决办法:
1.进入Android源码/system/core/vold/Volume.cpp 文件
2.. 将Fat:doMount(devicePath, "/mnt/secure/staging", false, false, false,
AID_SYSTEM, gid, 0702, true)修改成为
Fat::doMount(devicePath, "/mnt/secure/staging", false, false, false,
1000, 1015, 0002, true))
这里参数具体的含义我就不太懂了,我也是根据网上的资料然后修改的,网上的资料对这几个参数的解释如下:
1000代表的是uid,即sytem
1015代表的是gid,
0002:是对权限的掩码
0002:表示 system: rwx-rwxr-x,此时system有读写执行权限
如果system不需要写权限可以将0002改为
0202: 表示 r-xrwxr-x。
默认的0702代表 ---rwxr-x
3.对Android系统重新编译,并将生成的烧录文件重新烧录就可以了。
其中我是在Android4.0上修改的,其它版本的我这里就不确定了。