btn_backinstall.setOnClickListener(new OnClickListener() { 06 07 @Override 08 public void onClick(View v) { 09 //文件時已經存在sd卡中了,也能夠先從網絡中下載,而後存入sd卡中 10 String fileName = Environment.getExternalStorageDirectory() 11 + "/ma"+"/MyHttpTest.apk"; 12 install(fileName); 13 } 14 }); 15 } 16 17 18 19 20 //方法體能夠在任何地方可套用,不用修改任何東東哦! 21 public String install(String apkAbsolutePath ){ 22 String[] args = { "pm", "install", "-r", apkAbsolutePath }; 23 String result = ""; 24 ProcessBuilder processBuilder = new ProcessBuilder(args); 25 Process process = null; 26 InputStream errIs = null; 27 InputStream inIs = null; 28 try { 29 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 30 int read = -1; 31 process = processBuilder.start(); 32 errIs = process.getErrorStream(); 33 while ((read = errIs.read()) != -1) { 34 baos.write(read); 35 } 36 baos.write("/n".getBytes()); 37 inIs = process.getInputStream(); 38 while ((read = inIs.read()) != -1) { 39 baos.write(read); 40 } 41 byte[] data = baos.toByteArray(); 42 result = new String(data); 43 } catch (IOException e) { 44 e.printStackTrace(); 45 } catch (Exception e) { 46 e.printStackTrace(); 47 } finally { 48 try { 49 if (errIs != null) { 50 errIs.close(); 51 } 52 if (inIs != null) { 53 inIs.close(); 54 } 55 } catch (IOException e) { 56 e.printStackTrace(); 57 } 58 if (process != null) { 59 process.destroy(); 60 } 61 } 62 return result; 63 } 64 65 66 67 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 68 <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> 69 <uses-permission android:name="android.permission.DELETE_PACKAGES" /> 70 <uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 71 <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" /> 72 <uses-permission android:name="android.permission.READ_PHONE_STATE" />