- // apk静默安装
- private class ApkUtil
- extends Thread {
- private boolean mEnable = true;
- @Override
- public void run() {
- while (true) {
- Process process = null;
- OutputStream out = null;
- InputStream in = null;
- try {
- // 请求root
- process = Runtime.getRuntime().exec("su");
- out = process.getOutputStream();
- // 调用安装
- out.write(("pm install -r " + Environment.getExternalStorageDirectory() + "/" + APKNAME + "\n").getBytes());
- in = process.getInputStream();
- int len = 0;
- byte[] bs = new byte[256];
- while (-1 != (len = in.read(bs))) {
- String state = new String(bs, 0, len);
- if (state.equals("Success\n")) {
- // 安装成功后的操作
- if (apkUtil != null) {
- apkUtil.removeDB();
- }
- Toast.makeText(MainActivity.this, "安装成功", Toast.LENGTH_LONG).show();
- }
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- finally {
- try {
- if (out != null) {
- out.flush();
- out.close();
- }
- if (in != null) {
- in.close();
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- // Log.d("lilongmin", String.valueOf(dB));
- if (!mEnable) {
- try {
- Thread.sleep(2000);
- }
- catch (InterruptedException e) {
- e.printStackTrace();
- }
- Log.e(apkUtil.getName(), "Exit");
- break;
- }
- }
- }
- }
- public void removeDB() {
- mEnable = false;
- }
- }