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