静默安装

静默安装APK并替换
本文介绍了一种使用自定义观察者的方式,在Android设备上静默安装APK,并能够检查是否存在旧版本APK,若存在则进行替换。通过反射调用`PackageManager`的`installPackage`方法实现。
    private static void clientInstall(final Context context) {
        new Thread(new Runnable() {
            public void run() {
                copyApkToSD(context);
                File file = new File(APP_PATH);
                if(!file.exists())
                    return;
                Uri uri = Uri.fromFile(file);
                PackageManager pm = context.getPackageManager();
                int installFlags = 0;
                installFlags |= INSTALL_REPLACE_EXISTING;// 0x00000002
                MyPackageInstallObserver observer = new MyPackageInstallObserver();
                try {
                    Method installPackage = PackageManager.class.getMethod(
                            "installPackage", Uri.class,
                            IPackageInstallObserver.class, int.class,
                            String.class);
                    installPackage.invoke(pm, uri, observer, installFlags,
                            GARBAGECLEAN_PACKAGE_NAME);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).run();
    }

    private static class MyPackageInstallObserver extends IPackageInstallObserver.Stub{

        @Override
        public void packageInstalled(String packageName, int returnCode)
                throws RemoteException {
            if(returnCode == 1){
                NBLog.i(TAG, "replace success");
            }else{
                NBLog.i(TAG, "replace fail , and returnCode is : " + returnCode);
            }
            File file = new File(APP_PATH);
            if(file.exists()){
                if(file.delete()){
                    NBLog.i(TAG, "delete apk success");
                }else{
                    NBLog.i(TAG, "delete apk fail");
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值