android APP 小米商店上架失败之《获取应用列表权限》
前言
如题 上架小米应用商店失败 理由是:获取应用列表权限
说明
每次启动app 打开登录页面 就弹出了获取应用列表权限 这样是不合规的
然而明明我在代码中没有申请该权限,为什么会弹出呢?大概是第三方库申请的权限
比如推送,地图等等
解决
<meta-dataandroid:name="do_not_need_get_installed_apps"android:value="true"/>
这是一种解决方案
还有应用内全局搜索以下 管控接口
PackageManager#getInstalledPackagesPackageManager#getInstalledPackagesAsUserPackageManager#getInstalledApplicationsPackageManager#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
}