冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述Android4.4对于sdcard权限的修改以及兼容性问题相关的知识,希望能为你提供帮助。
我们在升级4.4的过程中,发现了部分第三方应用不能使用。查看发现下面几点要求:
1》 API 19以上如今强制要求android.permission.READ_EXTERNAL_STORAGE 和android.permission.WRITE_EXTERNAL_STORAGE 权限了。
2》假设发现仍然能够在真机上面没有加权限也能够读到sdcard的内容。请查看手机是否是root过的。
原因例如以下:
3》注意: 当你manifest中定义的android:minSdkVersion 和 android:targetSdkVersion是3或者下面的话。这个权限在API 19(android 4.4.2)的机器上是会强制给你附上这个读写sdcard的权限的。假设你确定你的应用不须要读写sdcard的权限的话,须要声明targetSdkVersion 大于等于4.。。。这个问题在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的
【Android4.4对于sdcard权限的修改以及兼容性问题】mount操作。strace的输出见附件。
另外非常有意思的一点,用su得到的shell,用ps $$察看这个进程的话,会发现它的
父进程是daemonsu。
推荐阅读
- Android利用Volley异步载入数据完整具体演示样例
- Android Bitmap
- Android Toast小解
- Canvas: trying to use a recycled bitmap android.graphics.Bitmap@XXX
- Android 4.4.2 动态加入JNI库方法记录 (一 JNI库层)
- [基础架构]PeopleSoft Application Server 重要文件说明
- 在App_Data中创建数据库获取连接串简便方法!
- Android+Handler+Thread 那些事儿
- Android多媒体-MediaPlayer唤醒锁及音频焦点