KK版本手机中发现三方apk(如三方filemanager,无法在外置sd卡上做新建、....
时间:10-02
整理:3721RD
点击:
KK版本开始手机中发现很多三方apk,如三方filemanager,无法在外置sd卡上做新建、删除文件等写操作
[DESCRIPTION]
KK版本开始手机中发现很多三方apk,如三方filemanager,无法在外置sd卡上做新建、删除文件等写操作,如新建文件会出现如下Permission denied的错误
System.out: mkdir failed: EACCES (Permission denied) path =
/storage/sdcard1/android/data/cn.cmvideo.isj
[SOLUTION]
一、因为KK版本上Google规定应用需要拥有android.permission.WRITE_MEDIA_STORAGE权限才能写
副卡,所以若三方没有按照要求申请到权限,而又要写副卡就会出现操作失败。
google原文说明: http://source.android.com/devices/tech/storage/
二、应用要拥有android.permission.WRITE_MEDIA_STORAGE的条件:
1、AndroiDMAnifest.xml中有申请android.permission.WRITE_MEDIA_STORAGE
<uses-permission android:name = "android.permission.WRITE_MEDIA_STORAGE" />
如果没有申请,需拿源码添加,否则该应用是肯定无法写副卡的。
2、要让这个权限申请成功,必须要采用下面2种方法之一
因为android.permission.WRITE_MEDIA_STORAGE属于SystemOrSignature level的permission,必须
采用下面两种方法之一才能申请成功。
1). 应用签系统签名
2). 将应用预置到/system/priv-app/下,即在对应的Android.mk中添加如下语句:
LOCAL_PRIVILEGED_MODULE := true
三、对比测试需注意事项:
1、该对比机并没有被root
2、所做的操作确实是写副卡
3、要写的文件并非是卡/Android/data/[packagename]下。因为google规定
Android/data/[packagename]是对应package的私有目录,对应的package是有权读写的。
[DESCRIPTION]
KK版本开始手机中发现很多三方apk,如三方filemanager,无法在外置sd卡上做新建、删除文件等写操作,如新建文件会出现如下Permission denied的错误
System.out: mkdir failed: EACCES (Permission denied) path =
/storage/sdcard1/android/data/cn.cmvideo.isj
[SOLUTION]
一、因为KK版本上Google规定应用需要拥有android.permission.WRITE_MEDIA_STORAGE权限才能写
副卡,所以若三方没有按照要求申请到权限,而又要写副卡就会出现操作失败。
google原文说明: http://source.android.com/devices/tech/storage/
二、应用要拥有android.permission.WRITE_MEDIA_STORAGE的条件:
1、AndroiDMAnifest.xml中有申请android.permission.WRITE_MEDIA_STORAGE
<uses-permission android:name = "android.permission.WRITE_MEDIA_STORAGE" />
如果没有申请,需拿源码添加,否则该应用是肯定无法写副卡的。
2、要让这个权限申请成功,必须要采用下面2种方法之一
因为android.permission.WRITE_MEDIA_STORAGE属于SystemOrSignature level的permission,必须
采用下面两种方法之一才能申请成功。
1). 应用签系统签名
2). 将应用预置到/system/priv-app/下,即在对应的Android.mk中添加如下语句:
LOCAL_PRIVILEGED_MODULE := true
三、对比测试需注意事项:
1、该对比机并没有被root
2、所做的操作确实是写副卡
3、要写的文件并非是卡/Android/data/[packagename]下。因为google规定
Android/data/[packagename]是对应package的私有目录,对应的package是有权读写的。