Android4.4对于sdcard权限的改动以及兼容性问题

我们在升级4.4的过程中,发现了部分第三方应用不能使用。查看发现以下几点要求:


1》 API 19以上现在强制要求android.permission.READ_EXTERNAL_STORAGE 和android.permission.WRITE_EXTERNAL_STORAGE 权限了。


2》如果发现仍然可以在真机上面没有加权限也可以读到sdcard的内容。请查看手机是否是root过的。


    原因如下:

这个问题在Nexus5上用root能看到/storage/emulated/0,而是我

们的手机上看不到。这是因为在Nexus5上我们得到root权限是能过super su得到的,

而在我们的手机上是直接能adb root(因为我们是在userdebug版本上)。我们看

到的额外的/storage/emulated/0节点是被supersu的daemonsu程序mount出来的。


如果把我们的手机的user版本也越一下狱,在su底下看,结果是跟N5一模一样的。


为了验证,我们把N5上的supersu daemon杀死(killall daemonsu),然后重新用

strace跟踪一下:


    strace -s 200 -f /system/xbin/daemonsu --auto-daemon


当在另一个终端里执行adb shell->su->mount察看时,还是能看到

/storage/emulated/0,然后察看strace的输出,它执行了/storage/emulated/0的

mount操作。strace的输出见附件。


另外很有意思的一点,用su得到的shell,用ps $$察看这个进程的话,会发现它的

父进程是daemonsu。


3》注意: 当你manifest中定义的android:minSdkVersion 和 android:targetSdkVersion是3或者以下的话,这个权限在API 19(android 4.4.2)的机器上是会强制给你附上这个读写sdcard的权限的,如果你确定你的应用不需要读写sdcard的权限的话,需要声明targetSdkVersion 大于等于4.。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值