4

安卓下普通 app 貌似可以随意获取已安装 app 列表

 1 year ago
source link: https://www.v2ex.com/t/892011
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  Android

安卓下普通 app 貌似可以随意获取已安装 app 列表

  clrss · 1 小时 37 分钟前 · 524 次点击

系统: 鸿蒙 2.0 (安卓 10), 后续版本不明.

这很危险吧. 某些软件是不是要改包名&自己打包比较好?

话说 iOS 下普通 app 能这样吗?

8 条回复    2022-11-02 12:17:12 +08:00
kera0a

kera0a      1 小时 30 分钟前

iOS 也算间接可以吧
需要开发者提前把 app scheme 列表声明好,然后就能扫描有没有安装了。
但有点限制,列表好像不能超过 100 个,没有 url scheme 的 app 不能扫.
paradoxs

paradoxs      1 小时 28 分钟前

iOS 的 scheme 算是个漏洞, 后面应该要被修复的。
yuyu2140

yuyu2140      1 小时 25 分钟前

Android 11 ( API 30 )调整了软件包可见性,不要慌。
ysc3839

ysc3839      1 小时 25 分钟前

是的。据说 Android 12 开始才有限制,但我手头上没有 AOSP 12 的设备,无法确认。MIUI 是较早就加入了“读取应用列表”权限,而且在 Android 12 中这个权限默认是允许的。
另外,即使限制了读取应用列表,也没办法限制探测某个包名的应用。比如我想探测 com.example.app 这个应用是否安装,可以直接访问 /data/data/com.example.app ,如果已安装会返回 Permission denied ,未安装则会返回 No such file or directory 。一种解决办法是把应用安装到另一个用户下 (Android 的多用户机制,Work Profile 以及许多厂商定制系统的应用双开也是基于多用户)。
mtdhllf

mtdhllf      46 分钟前   ❤️ 1

@ysc3839 #4 权限默认是允许的,但是带这个权限会影响 app 上架,要有合理的需求
yfugibr

yfugibr      38 分钟前 via Android

11 或是 12 似乎是新加了什么限制,但是基本没用,想读照样读
有 root 可以试试这个
https://github.com/Dr-TSNG/Hide-My-Applist
abc8678

abc8678      33 分钟前 via Android

MIUI 有这个选项,但默认勾了允许。每次装软件都要麻烦一通,存储空间隔离,magisk 隐藏,应用列表的允许改为拒绝
ysc3839

ysc3839      21 分钟前

@ysc3839 更正一下,前面提到的探测应用的问题,我找了个 target api 是 Android 12L 的终端应用测试了一下,发现都是会返回 No such file or directory ,而另外几个 target api 低于 Android 11 的则会返回 Permission denied 。所以说这个问题是已经解决了的,只是没有针对旧应用启用。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK