Android 检查应用包名是否存在卸载指定包名

一.卸载指定应用包名俩种方式,直接上代码这种是获取root权限实现偷偷卸载别的应用。

   //静默卸载
    private void uninstallSlient() {
        String packageName = "elink.mobile.im";
        String cmd = "pm uninstall " + packageName;

        Process process = null;

        DataOutputStream os = null;

        BufferedReader successResult = null;

        BufferedReader errorResult = null;

        StringBuilder successMsg = null;

        StringBuilder errorMsg = null;

        try {
            //卸载也需要root权限

            process = Runtime.getRuntime().exec("su");

            os = new DataOutputStream(process.getOutputStream());

            os.write(cmd.getBytes());

            os.writeBytes("\n");

            os.writeBytes("exit\n");

            os.flush();

            //执行命令

            process.waitFor();

            //获取返回结果

            successMsg = new StringBuilder();

            errorMsg = new StringBuilder();

            successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));

            errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));

            String s;

            while ((s = successResult.readLine()) != null) {
                successMsg.append(s);

            }

            while ((s = errorResult.readLine()) != null) {
                errorMsg.append(s);

            }

        } catch (Exception e) {
            e.printStackTrace();

        } finally {
            try {
                if (os != null) {
                    os.close();

                }

                if (process != null) {
                    process.destroy();

                }

                if (successResult != null) {
                    successResult.close();

                }

                if (errorResult != null) {
                    errorResult.close();

                }

            } catch (Exception e) {
                e.printStackTrace();

            }

        }
    }

二.第二种方式是当没有root权限的情况下手动卸载,直接上代码。

/**
     * check and delete the old package app if it exists.
     */
    private void checkOldPackage() {
        String packageName = "elink.mobile.im";
        if (isAvilible(this, packageName)) {
            Intent uninstall_intent = new Intent();
            uninstall_intent.setAction(Intent.ACTION_DELETE);
            uninstall_intent.setData(Uri.parse("package:" + packageName));
            startActivity(uninstall_intent);
        }
    }

    private boolean isAvilible(Context cxt, String packagename) {


        final PackageManager packageManager = cxt.getPackageManager();

        // 获取所有已安装程序的包信息
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        for (int i = 0; i < pinfo.size(); i++) {

            // 循环判断是否存在指定包名
            if (pinfo.get(i).packageName.equalsIgnoreCase(packagename)) {
                return true;
            }

        }
        return false;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值