美文网首页
Android - uninstall app for all

Android - uninstall app for all

作者: cingL | 来源:发表于2017-03-03 22:18 被阅读0次

    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>

    1. adb uninstall
    2. 手动删文件夹 \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>


    reference

    相关文章

      网友评论

          本文标题:Android - uninstall app for all

          本文链接:https://www.haomeiwen.com/subject/najqgttx.html