Android—java实现apk的静默安装、普通安装

来源:互联网 发布:在线学编程的网站 编辑:程序博客网 时间:2024/05/17 01:08
  • 执行静默安装,正常状态下,前台无任何反应,APP在后台完成安装。该功能一般也被称为“后台安装”,实现该功能需要ROOT
  • 执行普通安装,将会弹出确认安装的提示框,与在文件管理器中打开APK文件实现安装

静默安装

private void silentInstall(final String path) {        new Thread(new Runnable() {            @Override            public void run() {                DataOutputStream out = null;                BufferedReader errorStream = null;                try {                    //申请su权限                    Process process = Runtime.getRuntime().exec("su");                    out = new DataOutputStream(process.getOutputStream());                    //执行pm install 命令                    String command = "pm install -r " + path + "\n";                    out.write(command.getBytes(Charset.forName("UTF-8")));                    out.flush();                    out.writeBytes("exit\n");                    out.flush();                    process.waitFor();                    errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));                    String msg = "";                    String line;                    while ((line = errorStream.readLine()) != null) {                        msg += line;                    }                    Log.i(TAG, "SilentInstall: "+msg);                } catch (Exception e) {                    Log.e(TAG, e.getMessage(), e);                } finally {                    try {                        if (out != null) {                            out.close();                        }                        if (errorStream != null) {                            errorStream.close();                        }                    } catch (IOException e) {                        Log.e(TAG, e.getMessage(), e);                    }                }            }        }).start();    }

普通安装

Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(    Uri.fromFile(new File(apkPath)),     "application/vnd.android.package-archive");context.startActivity(intent);