W库罗德ITE_MEDIA_STORAGE/W奥迪Q5ITE_EXTEPAJERONAL_STORAGE表达

那三种配备对SDCACRUISERD的权能决定是不一样等的。

联合分区:依照谷歌(谷歌)4.4的须求,把sdcard,U盘等外部存储器的权柄设置为uid=
AID_SYSTEM gid=AID_MEDIA_RW,mask是0002.。
那样就必要要对sdcard等有写权限必须求持有这几个permission。

<uses-permission
android:name=”android.permission.WRITE_MEDIA_STORAGE” />

其一permission对应的group消息是在frameworks/base/data/etc/platform.xml
中定义的

<permission name=”android.permission.WRITE_MEDIA_STORAGE” >

<group gid=”media_rw” />

</permission>

本条permission是4.4中新增的,并且是不推荐应用的。

非合并分区:为了方便使用并且十分4.2此前的APK,大家把sdcard,u盘的权限设置为uid=
AID_ACCESS,SYSTEM gid=AID_SDCARD_RW,mask是0002.。
那样就需求要对sdcard等有写权限必必要负有

以此permission对应的group音信是在frameworks/base/data/etc/platform.xml
中定义的

<permission name=”android.permission.WRITE_EXTERNAL_STORAGE”
>

其一permission是4.2从前就起来应用的,大家都相比了解。

修改章程:

<permission name=”android.permission.WRITE_EXTERNAL_STORAGE” >

<group gid=”sdcard_r” />

<group gid=”sdcard_rw” />

</permission>

其他方案上利用了如下方法绕过这么些标题,不过本人是不提出使用的

就是在frameworks/base/data/etc/platform.xml 中作如下修改

即把WRITE_MEDIA_STORAGE这些permission对应的group也赋值到W哈弗ITE_EXTERNAL_STORAGE那个权力中,也即是说WXC60ITE_MEDIA_STORAGE那一个权力的支配功效失效了。

在意:那一个permission需求运用platform签名即在Android.mk中要加进如下:

+LOCAL_CERTIFICATE := platform

这般修改之后GMS包中的APK,以及第三方的APK就可以去除sdcard中的文件了。但是Android系统中对openOutputStream如故有限量的,不容许用openOutputStream
保存文件到非主存储器上。

地方是:GMS包中的Photo那几个APK不只怕保存编辑过的sdcard中的图片。

修改章程如下:

— a/src/com/android/providers/media/MediaProvider.java

+++ b/src/com/android/providers/media/MediaProvider.java

@@ -4787,10 +4787,10 @@ public class MediaProvider extends
ContentProvider {

c.enforceCallingOrSelfPermission(

ACCESS_CACHE_FILESYSTEM, “Cache path: ” + path);

}

– } else if (isWrite) {

+ }/* else if (isWrite) {

// don’t write to non-cache, non-sdcard files.

throw new FileNotFoundException(“Can’t access ” + file);

– } else if (isSecondaryExternalPath(path)) {

+ } */else if (isSecondaryExternalPath(path)) {

// read access is OK with the appropriate permission

if (!readGranted) {

c.enforceCallingOrSelfPermission(

相关文章