Android App清除数据的方案

前言

最近MIUI13上出了个未经应用商店安装,算是未知来源。AndroidID,通知,网络权限没授权则默认关闭。

安装app时允许虚拟身份ID:

  1. 允许允许虚拟身份ID前获取一次AndroidId:
    attachBaseContext获取AndroidId, 此时还没有点允许虚拟身份ID,此时获取的AndroidId:0000000000000000,允许虚拟身份后后再获取也是不会变化的,需要杀进程重新打开app才能获取正确的AndroidId。

  2. 允许虚拟身份ID后获取AndroidID:
    点允许虚拟身份ID后,再获取AndroidID正常,不需要杀进程重启app进程。

安装app时不允许虚拟身份ID:

  1. 获取AndroidID返回0000000000000000
  2. 系统设置->app权限:允许手机信息 后,获取AndroidID依然返回 0000000000000000

一旦用户点击确认,该权限弹框就不再弹出。

有一个业务场景需要有该弹框弹出的恢复机制,可以通过清除应用数据达到目的。

解决方法一:

在app里直接调用系统接口clearApplicationUserData进行清除

        ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        if (am != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            boolean ret = am.clearApplicationUserData();
            Log.w(TAG, "Clear application user data result:" + ret);
        }

解决方法二:

在app里直接执行命令pm clear packageName

    public static Process clearAppUserData(String packageName) {
        Process p = execRuntimeProcess("pm clear " + packageName);
        return p;
    }

    public static Process execRuntimeProcess(String commond) {
        Process p = null;
        try {
            p = Runtime.getRuntime().exec(commond);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return p;
    }

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值