关于外置SDCARD权限问题
关于外置SDCARD权限问题
wangjian19 发表于4年前
关于外置SDCARD权限问题
  • 发表于 4年前
  • 阅读 3278
  • 收藏 2
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

摘要: 在自己的APK中无法写(只读)外置SDCARD

今天应用层的说是apk无法在外置SDCARD写数据,豌豆荚也创建不了,我仔细在adb下看了SDCARD的权限,如图:

我要说的是EXTSD(sdcard是系统从nand分配的内存),拥有者是SYStem,media_rw为用户组,拥有者是没有读写权限的,而media_rw是可读可写可执行的,其他用户是没有写的权限(由此可见该APK所属其他用户),这个问题我尝试这在init.rc中用chmod 777 /mnt/extsd 来增加权限,但是可惜的是在系统启动的时候通过串口ll查看确实是改过来了 ,但是等android完全跑起来之后,通过ADB查看,还是原样的075的权限;

原因是在VOLD的检测到外置SDCARD的时候又重新分配了权限;

怎么解决呢?

第一是:

修改源码system/vold/Volume.cpp

if (primaryStorage) {
            // Special case the primary SD card.
            // For this we grant write access to the SDCARD_RW group.
            gid = AID_SDCARD_RW;
        } else {
            // For secondary external storage we keep things locked up.
            gid = AID_MEDIA_RW;
        }
改为

if (1) {
            // Special case the primary SD card.
            // For this we grant write access to the SDCARD_RW group.
            gid = AID_SDCARD_RW;
        } else {
            // For secondary external storage we keep things locked up.
            gid = AID_MEDIA_RW;
        }

方法二:

在android/out/target/product/wing-k70/system/etc/permissions目录下的platform.xml

如果没有源码的话,就下个ES,修改同样是修改system/etc/permissions目录下的platform.xml


<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
      <group gid="sdcard_rw" />
    </permission>
改为
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
      <group gid="sdcard_rw" />
      <group gid="media_rw" />
    </permission>

保存,重启。所有的应用都能够打开extsd卡上文件并修改保存,pptv也能把下载地址设置为extsd。另外360手机助手也能直接操作extsd卡上的内容进行删除。

在到/mnt下ll,如图:

extsd的权限已改为777;

这样做只是能保证我们的APK能读写外置SDCARD,但是有没有安全的问题,有待发现!


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 14
博文 50
码字总数 101397
×
wangjian19
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: