1.系统权限描述
MIUI11中,应政府对手机软件权限获取的合规要求,MIUI将支持三方应用通过向系统接口传输参数的方式,显示获取运行时权限的目的及用途,具体方案如下:
应用申请运行时权限时,可通过接口传输权限用途及描述,满足政府对于软件获取权限的合规要求,同时通过有效行为描述增加用户授权的可能性。
2.接口开放标准
2.1.填写权限使用申请
- 仅支持通过小米应用商店上架的应用申请使用接口,申请时请按以下内容填写权限申请资料:
权限名称 | 是否申请 | 权限用途及说明(请提供简体中文及英语,中文字符不超过18个汉字) |
Manifest.permission.READ_CONTACTS | ||
Manifest.permission.WRITE_CONTACTS | ||
Manifest.permission.GET_ACCOUNTS | ||
Manifest.permission.WRITE_CALENDAR | ||
Manifest.permission.SEND_SMS | ||
Manifest.permission.RECEIVE_SMS | ||
Manifest.permission.READ_SMS | ||
Manifest.permission.RECEIVE_MMS | ||
Manifest.permission.READ_EXTERNAL_STORAGE | ||
Manifest.permission.WRITE_EXTERNAL_STORAGE | ||
Manifest.permission.ACCESS_FINE_LOCATIONManifest.permission.ACCESS_COARSE_LOCATION | ||
Manifest.permission.READ_CALL_LOG | ||
Manifest.permission.WRITE_CALL_LOG | ||
Manifest.permission.PROCESS_OUTGOING_CALLS | ||
Manifest.permission.READ_PHONE_STATE | ||
Manifest.permission.READ_PHONE_NUMBERS | ||
Manifest.permission.CALL_PHONE | ||
Manifest.permission.ADD_VOICEMAIL | ||
Manifest.permission.USE_SIP | ||
Manifest.permission.ANSWER_PHONE_CALLS | ||
Manifest.permission.RECORD_AUDIO | ||
Manifest.permission.ACTIVITY_RECOGNITION | ||
Manifest.permission.CAMERA | ||
Manifest.permission.BODY_SENSORS |
- 重要提示:以下权限,在MIUI 11 3.12 的开发版后将无法获取:
Manifest.permission.READ_PHONE_STATE
Manifest.permission.READ_PHONE_NUMBERS
Manifest.permission.CALL_PHONE Manifest.permission.ANSWER_PHONE_CALLS
2.2.发送权限申请至审核邮箱
填写权限使用申请后,请按如下格式将内容发送至miui-security-open@xiaomi.com
邮件主题:申请使用系统权限描述
【申请应用】填写应用名称
【应用包名】com.xxxx.xxxx
【公司主体】填写公司主体名称
【相关负责人】填写相关负责人
【联系方式】填写相关负责人联系方式
【权限申请目录】粘贴权限使用申请内容
2.3.等待审核
发送邮件后,请等待反馈,反馈时间在1-3个工作日内,若审核通过,将在反馈中提供调用方法并开设白名单。
2.4.技术接入
确定开放白名单后,请按以下方式接入:
申请示例:
private String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_FINE_LOCATION
};
private String[] permissionDescs = new String[] {
"存储用户精修美图",
"拍摄抖音短视频",
"游戏中进行语音交流",
"获取地理位置来提供导航功能"
};
private List<String> mPermissionList = new ArrayList<>();
private static final int PERMISSION_REQUEST = 1;
//开始申请
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
mPermissionList.add(permissions[i]);
mPermissionList.add(permissionDescs[i]);
}
}
if (mPermissionList.isEmpty()) {
//业务操作
} else {
String[] permissions = mPermissionList.toArray(new String[mPermissionList.size(源代码生成app)]);
ActivityCompat.requestPermissions(MainActivity.this, permissions, PERMISSION_REQUEST);
}
//申请回调
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == PERMISSION_REQUEST) {
//业务操作
}
}
以上是最新推荐的申请权限的方式,只需要在申请的权限数组中加上对应的权限描述即可。
2.5.注意事项
权限及传入的权限描述要一一对应,权限描述不能传入null,若不需要描述,可传入空字符串:” “。
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12202/
部分内容来自网络投稿,如有侵权联系立删