我们在升级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.。。。
分享到:
相关推荐
安卓自从4.4系统以后,官方默认不能往tf卡中修改数据,这个包支持修复所有4.4安卓系统,修复sdcard写权限。
android修改system读取sdcard权限的一份代码
android应用开发中关于SDCard读写操作的实例代码,在下载学习SDCard操作中,碰到很棘手的问题了。不过最后还在我的坚持下成功了,
Android应用源码SdCard读写文件实例
获取外置SDcard路径,进行创建,写入,读取,删除操作。
Android应用源码SdCard读写文件实例.zip
Android M 读取OTG U盘路径和sdcard路径demo , 第三方apk可以参考使用。摘要为什么要50个字,为什么呢?
Android如何获取SDCard_内存,不错哦。
android 写入SDcard 文件,通俗易懂,适合初学者
/ 参数说明 // context:上下文 // dialogid:对话框ID // title:对话框标题 // callback:一个传递Bundle参数的回调接口 // suffix:需要选择的文件后缀,比如需要选择wav、mp3文件的时候设置为".wav;...
具体介绍了android中sdcard的读写操作步骤和具体的实现过程,介绍了sdcard的应用等
代码如下:// 读取sdcard文件private void sdcardRead(){String fileName = “/sdcard/my_sdcard.txt”;// assets下文件//String fileName = “/sdcard/test/my_sdcard_test.txt”;// sdcard下子目录文件String ret =...
Android模拟器sdcard操作 ,帮助我们更好学Android系统开发
android调试sdcard文件加载,解决不能传入文件问题: 只需要执行4个命令,win和mac下都好使。
android手机外置SDcard(TF卡)获取方法,非内置sdcard!
Android数据存储之Sdcard,Android数据存储之Sdcard,自己写的简单例子,需要的可以参考一下。
这个真的经典,值得下载,Android的好资源!
可以解析本地图片,并显示在屏幕上,很实用