Android静默安装和静默卸载接口封装

来源:互联网 发布:太空工程师 编程教程 编辑:程序博客网 时间:2024/05/22 03:06
    /**     * @param filePath: the full path of which apk you will install.     * @return 0: install success; 1: filePath error; 2: some exception occurred.     */    public int installSlient(String filePath){        File file = new File(filePath);        mPkgName = getApkPkgName(filePath);        if (filePath == null || filePath.length() == 0                || (file == null || file.length() <= 0                || !file.exists() || !file.isFile())) {            Log.d(TAG, "Error! FilePath: " + filePath);            return 1;        }        String[] args = { "pm", "install", "-r", filePath };        ProcessBuilder processBuilder = new ProcessBuilder(args);        Process process = null;        BufferedReader successResult = null;        BufferedReader errorResult = null;        StringBuilder successMsg = new StringBuilder();        StringBuilder errorMsg = new StringBuilder();        int result;        try {            process = processBuilder.start();            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 (IOException e) {            e.printStackTrace();            result = 2;        } catch (Exception e) {            e.printStackTrace();            result = 2;        } finally {            try {                if (successResult != null) {                    successResult.close();                }                if (errorResult != null) {                    errorResult.close();                }            } catch (IOException e) {                e.printStackTrace();            }            if (process != null) {                process.destroy();            }        }        if (successMsg.toString().contains("Success")                || successMsg.toString().contains("success")) {            result = 0;        } else {            result = 2;        }        Log.d(TAG, "successMsg:" + successMsg + ", ErrorMsg:" + errorMsg);        return result;}    /**     * @param pkgName: the application package name which you will uninstall.     * @return 0: uninstall success; 1: package name error; 2: some exception occurred.     */    public int uninstallSlient(String pkgName){        mPkgName = pkgName;        if (pkgName == null || pkgName.equals("")){            Log.d(TAG, "Error! pkgName: " + pkgName);            return 1;        }        String[] args = { "pm", "uninstall", pkgName };        ProcessBuilder processBuilder = new ProcessBuilder(args);        Process process = null;        BufferedReader successResult = null;        BufferedReader errorResult = null;        StringBuilder successMsg = new StringBuilder();        StringBuilder errorMsg = new StringBuilder();        int result;        try {            process = processBuilder.start();            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 (IOException e) {            e.printStackTrace();            result = 2;        } catch (Exception e) {            e.printStackTrace();            result = 2;        } finally {            try {                if (successResult != null) {                    successResult.close();                }                if (errorResult != null) {                    errorResult.close();                }            } catch (IOException e) {                e.printStackTrace();            }            if (process != null) {                process.destroy();            }        }        if (successMsg.toString().contains("Success")                || successMsg.toString().contains("success")) {            result = 0;        } else {            result = 2;        }        Log.d(TAG, "successMsg:" + successMsg + ", ErrorMsg:" + errorMsg);        return result;    }
    public  String getApkPkgName(String filePath) {        if (TextUtils.isEmpty(filePath))            return null;        PackageManager pm = mContext.getPackageManager();        PackageInfo info = pm.getPackageArchiveInfo(filePath,                PackageManager.GET_ACTIVITIES);        if (info != null) {            ApplicationInfo appInfo = info.applicationInfo;            String packname = appInfo.packageName;            return packname;        } else {            return null;        }    }


原创粉丝点击