关于QUERY_ALL_PACKAGES权限导致Google下架apk

谷歌商店被下架,原因是第三方使用了 QUERY_ALL_PACKAGES 权限;

Google在高版本上限制了此权限的使用。当然,并不是 QUERY_ALL_PACKAGES 这个权限没有了,而是被列为敏感权限,必须有充分的理由说明,才允许上架 GP,否则下架。

需删除:

<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"

tools:ignore="QueryAllPackagesPermission" />

<!-- 解决无法读取第三方应用包名问题-->

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:node="remove"/>

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
  1. 申请使用QUERY_ALL_PACKAGES权限,请说明详细用途,并在隐私政策上体现出来,如不使用请在工程里删除此权限.
  2. 修改过的包记得覆盖当前正式版,内部测试版.避免因为内部测试版的包没更新,造成再次下架,或者不过审.
  3. AndroidManifest.xml 中,进行以下声明<queries> 元素。 <queries>
    <!-- 微博 -->
    <package android:name="com.sina.weibo" />
    <!-- QQ -->
    <package android:name="com.tencent.mobileqq" />
    </queries>
  4. 通过以下方式判断是否存在 context.getPackageManager().getPackageInfo(pkgName, 0);

如何打包apk呢?

Android studio 搜索全局,搜索对应的权限,然后点击此条权限后面的按钮开关进行关闭.这样打包的时候就没有出现该权限了,不然只要重新打包就还是会自动加入这个权限.

获取桌面所有已安装的应用:

方式一:

private List<String> getInstalledPackages (Context context) {

List<String> installedPackageList = new ArrayList<>();

List<PackageInfo> installedPackageInfoList = context.getPackageManager().getInstalledPackages(PackageManager.MATCH_UNINSTALLED_PACKAGES);

for (PackageInfo packageInfo: installedPackageInfoList) {

installedPackageList.add(packageInfo.packageName);

}

return installedPackageList;

}

方式二:

private List<String> getAllLauncherIconPackages (Context context) {

List<String> launcherIconPackageList = new ArrayList<>();

Intent intent = new Intent();

intent.setAction(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

//set MATCH_ALL to prevent any filtering of the results

List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_ALL);

for (ResolveInfo info: resolveInfos) {

launcherIconPackageList.add(info.activityInfo.packageName);

}

return launcherIconPackageList;

}

相关推荐
liulilittle8 小时前
.NET ExpandoObject 技术原理解析
开发语言·网络·windows·c#·.net·net·动态编程
cpsvps15 小时前
VR协作海外云:跨国企业沉浸式办公解决方案
windows·架构·vr·etw事件
义薄云天us16 小时前
019_工具集成与外部API调用
数据库·人工智能·windows·microsoft·claude code
RainbowSea16 小时前
安装win10出现“计算机意外的重新启动或遇到错误。Windows安装无法继续。若要安装Windows,请单击“确定”重新启动计算机,然后安装系统。”
windows·后端
bug攻城狮17 小时前
理解Grafana中`X-Scope-OrgID`的作用与配置
windows·grafana
扛枪的书生19 小时前
AD 提权-NTLM 中继攻击(强制认证)
windows·渗透·kali·提权·域渗透
hqxstudying19 小时前
Java行为型模式---观察者模式
java·开发语言·windows·观察者模式
Damon小智21 小时前
玩转ClaudeCode:ClaudeCode安装教程(Windows+Linux+MacOS)
windows·ai·mac·wsl·claude code·vibe code
CHANG_THE_WORLD1 天前
libimagequant windows 编译
windows·libimagequant
xchenhao1 天前
基于 Flutter 的开源文本 TTS 朗读器(支持 Windows/macOS/Android)
android·windows·flutter·macos·openai·tts·朗读器