Android权限相关

Android权限等级划分为:
  • normal 的权限只要申请了就可以使用
  • dangerous 的权限在安装时需要用户确认才可以使用
  • signature需要签名才能赋予权限
  • signatureOrSystem需要签名或者系统级应用(放置在/system/priv-app目录下)才能赋予权限
  • system系统级应用(放置在/system/priv-app目录下)才能赋予权限,权限的描述在frameworks/base/core/res/AndroidManifest.xml当中。

看两个权限:

WRITE_EXTERNAL_STORAGE : 读写主卡的权限
WRITE_MEDIA_STORAGE:读写副卡的权限

到了Android 4.4 KitKat,WRITE_MEDIA_STORAGE 权限仅提供给系统应用,不再授予第三方App。
WRITE_EXTERNAL_STORAGE 权限变成了仅仅控制 primary storage,而 WRITE_MEDIA_STORAGE 权限来控制secondary external storage 的操作。

关于 secondary external storage写操作也有了新规定。
Android的文档是这么写的:
The WRITE_EXTERNAL_STORAGE permission must only grant write access to the primary external storage on a device. Apps must not be allowed to write to secondary external storage devices, except in their package-specific directories as allowed by synthesized permissions. Restricting writes in this way ensures the system can clean up files when applications are uninstalled.

如果App使用System Level的permission,需要预置到/system/priv-app底下 (原来在/system/app)或者使用系统签名

关于获取副SD卡的写入权限的案例,App需要在AndroidManifest.xml声明WRITE_MEDIA_STORAGE permission获取副卡的写入权限
已知android.permission.WRITE_MEDIA_STORAGE属于SystemOrSignature level的permission
那么有三种方法:
1. 修改Android.mk,增加LOCAL_PRIVILEGED_MODULE := true,以声明app需要放在/system/priv-app下。
2. 在manifest文件中声明,android:sharedUserId=”android.uid.system”,然后签上系统签名platform.x509.pem和platform.pk8在工程目录/build/target/product/security中,注意源代码里面的只是一个debug版本的key,非正式版。
3. 同样在manifest文件中声明android:sharedUserId=”android.uid.system”然后mk文件中添加LOCAL_CERTIFICATE := platform,启用系统签名,与2意思差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值