前言
如题 上架小米应用商店失败 理由是:获取应用列表权限
说明
每次启动app 打开登录页面 就弹出了获取应用列表权限 这样是不合规的
然而明明我在代码中没有申请该权限,为什么会弹出呢?大概是第三方库申请的权限
比如推送,地图等等
解决
<meta-data
android:name="do_not_need_get_installed_apps"
android:value="true"/>
这是一种解决方案
还有应用内全局搜索以下 管控接口
PackageManager#getInstalledPackages
PackageManager#getInstalledPackagesAsUser
PackageManager#getInstalledApplications
PackageManager#getInstalledApplicationsAsUser
还有一种方法是的确用到了该权限
比如应用之间通讯 ContentProvider
这个时候需要做权限适配 但是要一步一步引导用户 而不是上来就申请该权限
manifest清单文件声明
<uses-permission android:name="com.android.permission.GET_INSTALLED_APPS"/>
是否支持动态申请权限
try {
PermissionInfo permissionInfo = getApplicationContext().getPackageManager().getPermissionInfo("com.android.permission.GET_INSTALLED_APPS", 0);
if (permissionInfo != null && permissionInfo.packageName.equals("com.lbe.security.miui")) {
//MIUI 系统支持动态申请该权限
if (ContextCompat.checkSelfPermission(getApplicationContext(), "com.android.permission.GET_INSTALLED_APPS") != PackageManager.PERMISSION_GRANTED) {
//没有权限,需要申请
ActivityCompat.requestPermissions(MainActivity.this, new String[]{"com.android.permission.GET_INSTALLED_APPS"}, 999);
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
判断权限授予结果(与普通运行时权限没有区别)
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
// do something
}