华为应用市场是如何在不给读取应用列表权限的情况下,获取到要更新的应用的?

169 天前
 moefishtang

测试设备:Redmi K80 HyperOS2.0.107.0 如图,我已经禁用了读取已安装列表权限(首次安装时就没给) 进入华为应用市场的更新页面也提示我开启已安装应用权限 可是进入应用更新页面,华为应用市场仍然能检测到我需要更新的应用和应用版本 Android 系统中有除了通过 QUERY_ALL_PACKAGES 以外的获取已安装应用列表的方式嘛? 也不是系统应用,华为应用市场我自己安装的,再说小米设备上怎么可能预装华为的应用市场

4224 次点击
所在节点    Android
15 条回复
Ackvincent
169 天前
Deepseek 给出的答案:华为应用市场主要依赖系统级 API (如 PackageManager 、ApplicationInfo 等)获取已安装应用的信息,而无需申请「读取应用列表权限」。
Ackvincent
169 天前
使用 PackageManager 的 getPackageInfo 或 getApplicationInfo 方法查询特定应用的信息(如包名、版本号等),无论 Android 版本如何,均不需要申请「读取应用列表权限」。
moefishtang
169 天前
@Ackvincent #1 在搭载 EMUI 或者 HarmonyOS 的设备可以,小米或者其他厂商的系统中会允许第三方应用商城调用系统级 API ?
moefishtang
169 天前
@Ackvincent #1 Deepseek 我也问了,其实使用情况访问也可以获取到,但是我也没给这个权限

另外 V2EX 不允许贴 AI 回复的
moefishtang
169 天前
@Ackvincent #2 Android11 以上必须声明 QUERY_ALL_PACKAGES 来获取完整应用列表的,否则只能看到自身
典型如酷安 app ,若不授予 QUERY_ALL_PACKAGES ,应用清单中就只有酷安
ysc3839
169 天前
target api 不是 11 ?
ysc3839
169 天前
我自己下载了确认了一下,target api 是 11 ,有申请 QUERY_ALL_PACKAGES 权限,MIUI 里禁止读取应用列表,还是能读取到。
dant
169 天前
可以通过 intent filter 只查询具有桌面图标的应用,不受 QUERY_ALL_PACKAGES 权限限制: https://stackoverflow.com/questions/79527331
yuhaofe
169 天前
估计是只限制了 getInstalledPackages ,没限制 queryIntentActivities

yuhaofe
169 天前
这个权限禁止挺幽默的,随便下了个第三方启动器,禁了应用列表权限,还是能正常显示所有 App ,想获取列表的 App 肯定会把所有能调的接口全调一遍,只限制一个没有任何意义……
bclerdx
168 天前
@yuhaofe 所以骚操作太多,转走歪门邪道,旁门左道。
xqzr
168 天前
@Livid #1 AI
hidev
168 天前
刚好 HackerNews 上最近挺火的一篇文章就在吐槽这个问题:

文章链接: https://peabee.substack.com/p/everyone-knows-what-apps-you-use
moefishtang
168 天前
@hidev 其实还有一个方法,应用间通过内嵌的 SDK 发现彼此
例如我在美团中使用微信支付订外卖,虽然没有给美团应用列表读取权限,仍然可以唤起微信进行支付
理论上应用商城可以做到让上架的 app 都内嵌统计 SDK ,通过 SDK 的方式实现读取安装列表和检测应用更新
lisongeee
168 天前
刚刚测了一下,packageManager.getPackageInfo(appId, 0) 拒绝权限没用,仍然可以获取到信息

也就是只需要有一个 appId list 就行了,queryIntentActivities 和 getInstalledPackages 都可以得到这个列表

前者我自己设备测试返回数量为 73 ,后者为 370 ,多出来的 300 其实都是没有桌面图标的系统应用,完全不影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1123221

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX