一、因为KK版本上Google规定应用需要拥有android.permission.WRITE_MEDIA_STORAGE权限才能写副卡,所以若三方没有按照要求申请到权限,而又要写副卡就会出现操作失败。
google原文说明: http://source.android.com/devices/tech/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是有权读写的。
之前试了很多次都不成功,即便本方案,后来发现是 androidmanifest.xml 中 application 加了下面几个字段导致的:
android:allowClearUserData="false" android:process="system"
android:killAfterRestore="false"
问题应该出在 : android:process="system" 。去掉就 OK。