Android 静默安装和自启动(1、Root环境下)

Android 静默安装和自启动(1、Root环境下),第1张

各种以android硬件平台为基础的【公示屏】、【广告屏】等等,虽然很少有升级,但是不可避免腊漏的会遇到胡纳,而此类APP的使用场景,一般没人会去帮助你版本更新,点击安装,故而需要:静默安装。

1、确认安装包是否存在,并可读写

2、隐示启动:action和data的schema来控制d出安装工具类APP,然后点击安装...

3、升级完:BootReceiver 监听到Intent.ACTION_PACKAGE_REPLACED,然后自启动裤局没

静默安装apk接口,无需开放root,也无需system权限。

1.静默卸载实现:

/**

    * 静默卸载app

    *

    * @param context

    * @param packageName app的包名

    * @throws IOException

    * @throws InterruptedException

    */

    public static void uninstallApp(Context context, String packageName) throws IOException, InterruptedException {

        List<PackageInfo>packageInfos = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES)

        for (PackageInfo packageInfo1 : packageInfos) {

         樱渣   if (packageName.equals(packageInfo1.packageName)) {

                String suPath = "/system/xbin/su"

                File file = new File(suPath)

                if (!file.exists()) {

                    suPath = "/system/bin/su"

                }

                Process process = Runtime.getRuntime().exec(suPath)

                String cmd = "pm uninstall " + packageName + "\n" + "exit\n"

                process.getOutputStream().write(cmd.getBytes())

                process.waitFor()

                break

            }

        }

    }

2.静默安装实现:

/**

    * 静默安装app

    *

    * @param filePath

    * @throws IOException

    * @throws InterruptedException

    */

    public static void installApp(String filePath) throws IOException, InterruptedException {

        String suPath = "/system/xbin/su"

        File file = new File(suPath)

        if (!file.exists()) {

            suPath = "/system/bin/su"

        }

        Process process = Runtime.getRuntime().exec(suPath)

        String cmd = "pm install -r " + filePath + "\n" + "exit\n"

        process.getOutputStream().write(cmd.getBytes())

        process.waitFor()

    }

最后加上重启命令

/**

    * 重启系统隐悔

    *

    * @return

    */

    public static boolean reboot() {

        try {

            String suPath = "/system/xbin/su"

            File file = new File(suPath)

            if (!file.exists()) {

                suPath = "/system/bin/su"

            }

           脊携悄 Process process = Runtime.getRuntime().exec(suPath)

            String cmd = "reboot\nexit\n"

            process.getOutputStream().write(cmd.getBytes())

            return true

        } catch (IOException error) {

            return false

        }

    }

注意卸载和安装需要在子线程中执行;如果单纯关机则用“reboot -p”命令


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12519662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存