静默安装的两种实现方式

    private boolean silentInstall(String fileName) {
        String apkAbsolutePath = fileName;// StorageUtils.getAPKDownloadDir() +
                                          // File.separator + fileName;
        String[] args = {
                "pm", "install", "-r", apkAbsolutePath
        };
        String result = "";
        ProcessBuilder processBuilder = new ProcessBuilder(args);
        Process process = null;
        InputStream inIs = null;
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            int read = -1;
            process = processBuilder.start();
            baos.write('/');
            inIs = process.getInputStream();
            while ((read = inIs.read()) != -1) {
                baos.write(read);
            }
            byte[] data = baos.toByteArray();
            result = new String(data);
            baos.close();
        } catch (IOException e) {


            GioneeLog.debug(TAG, "silentInstall failed0");
            e.printStackTrace();
        } catch (Exception e) {
            GioneeLog.debug(TAG, "silentInstall failed1");
            e.printStackTrace();
        } finally {
            try {
                if (inIs != null) {
                    inIs.close();
                }
            } catch (IOException e) {
                GioneeLog.debug(TAG, "silentInstall failed2");
                e.printStackTrace();
            }
            if (process != null) {
                process.destroy();
            }
        }
        if (result.contains("Success")) {
            GioneeLog.debug(TAG, "silentInstall success");


            applyLockScreen();
            return true;
        }
        GioneeLog.debug(TAG, "silentInstall failed3");
        return false;
    }


    /**
     * 静默安装
     */
    public void installApkDefaul(Context context, String filePath) {


        String packageName = "com.example.testparceable";


        try {
            File file = new File(filePath);
            int installFlags = 0;
            boolean isExist = file.exists();
            Log.d(TAG, "jing mo an zhuang:" + packageName + ",fileName:" + filePath + " isExist="
                    + isExist);
            if (!isExist)
                return;
            installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
            // if (FALSE()) {
            // installFlags |= PackageManager.INSTALL_EXTERNAL;
            // }
            PackageManager pm = context.getPackageManager();
            // try { try {
            // IPackageInstallObserver observer = new MyPakcageInstallObserver(
            // context, APPName, appId, fileName, packageName, type_name);
            Log.i(TAG, "installFlags:" + installFlags + "packagename:"
                    + packageName);
            pm.installPackage(Uri.fromFile(file), null, installFlags,
                    packageName);


            Log.i(TAG, "installApkDefaul success");


            applyLockScreen();
        } catch (Exception e) {
            // ((MarketApplication) context).setApp_detail_status(appId,
            // MarketApplication.APP_STATUS_NOTEXIT);
            Log.i(TAG, "installApkDefaul exception " + e);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值