situation
卸载应用后,重新安装总提示覆盖旧应用,莫名其妙
用RE一看 <code>\data\app</code> 文件下竟然还有该应用文件夹
卸载残留?研究了一下为何
device:红米note2,Android 5.0.2,MIUI8开发版
reason
Android 4.2 开始多了个multi user
详细可参考 UserManager
应用只在当前用户中卸载 → 造成了uninstall for all users 的需求
在app list中已卸载的应用 会提示 造成了not install for this user 的情况
就是multi user 的锅
solution
<em>删除其他用户</em>
<code>\data\system\users</code> 文件下删除多余的用户
通常id=0的就是主用户,保留
其他id的文件夹和xml文件可删
<em>不删用户</em>
- adb uninstall
- 手动删文件夹 \data\app下
碎碎念
idNo.xml 文件记录了user的信息
发现有个是X开头的999user 莫名其妙,大概是刷Xpose框架时遗留的东西?
还有个99的Air Lock?user,这个完全不知道是哪来的了
把99 和 999 都删了,剩下id为0的用户,吗哒,卸载干净了。
所以最后还是multi-user的问题
另
<code>usermanager.getUserCount()</code>
方法需 Android 4.2+
同时需要permission MANAGE_USER
但此权限permission level : system
非系统应用会抛出异常
<code>Caused by: java.lang.SecurityException: You either need MANAGE_USERS or CREATE_USERS permission to: query user</code>
最后用↓拿到的user count(5.0+)
<code>UserManager um = (UserManager) getSystemService(USER_SERVICE);
int count = um.getUserProfiles().size();</code>
网友评论