Android - uninstall app for all users

situation

卸载应用后,重新安装总提示覆盖旧应用,莫名其妙
用RE一看 \data\app 文件下竟然还有该应用文件夹
卸载残留?研究了一下为何
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

删除其他用户

\data\system\users 文件下删除多余的用户
通常id=0的就是主用户,保留
其他id的文件夹和xml文件可删

不删用户

  1. adb uninstall
  2. 手动删文件夹 \data\app下

碎碎念

idNo.xml 文件记录了user的信息
发现有个是X开头的999user 莫名其妙,大概是刷Xpose框架时遗留的东西?
还有个99的Air Lock?user,这个完全不知道是哪来的了
把99 和 999 都删了,剩下id为0的用户,吗哒,卸载干净了。
所以最后还是multi-user的问题


usermanager.getUserCount()
方法需 Android 4.2+
同时需要permission MANAGE_USER
但此权限permission level : system
非系统应用会抛出异常
Caused by: java.lang.SecurityException: You either need MANAGE_USERS or CREATE_USERS permission to: query user

最后用↓拿到的user count(5.0+)
UserManager um = (UserManager) getSystemService(USER_SERVICE);
int count = um.getUserProfiles().size();


reference

  • Research, Android 4.2 Try to enable multi user support on phones

  • UserManager getUserCount() (Jelly Bean)

  • Is there an intent for uninstallation of an app for ALL users?

你可能感兴趣的:(Android - uninstall app for all users)