Android实现应用下载并自动安装apk包


转载:http://www.open-open.com/lib/view/1329274683593


安装:

?
1
2
3
4
5
String str =  "/CanavaCancel.apk" ;
String fileName = Environment.getExternalStorageDirectory() + str;
Intent intent =  new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile( new File(fileName)),  "application/vnd.android.package-archive" );
startActivity(intent);

卸载:

?
1
2
3
Uri packageURI = Uri.parse( "package:com.demo.CanavaCancel" );  
Intent uninstallIntent =  new Intent(Intent.ACTION_DELETE, packageURI);  
startActivity(uninstallIntent);

Environment拥有一些可以获取环境变量的方法 
package:com.demo.CanavaCancel 这个形式是 package:程序完整的路径 (包名+程序名).

//下载apk程序代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
protected File downLoadFile(String httpUrl) {
                 // TODO Auto-generated method stub
                 final String fileName =  "updata.apk" ;
                 File tmpFile =  new File( "/sdcard/update" );
                 if (!tmpFile.exists()) {
                         tmpFile.mkdir();
                 }
                 final File file =  new File( "/sdcard/update/" + fileName);
 
                 try {
                         URL url =  new URL(httpUrl);
                         try {
                                 HttpURLConnection conn = (HttpURLConnection) url
                                                 .openConnection();
                                 InputStream is = conn.getInputStream();
                                 FileOutputStream fos =  new FileOutputStream(file);
                                 byte [] buf =  new byte [ 256 ];
                                 conn.connect();
                                 double count =  0 ;
                                 if (conn.getResponseCode() >=  400 ) {
                                         Toast.makeText(Main. this "连接超时" , Toast.LENGTH_SHORT)
                                                         .show();
                                 else {
                                         while (count <=  100 ) {
                                                 if (is !=  null ) {
                                                         int numRead = is.read(buf);
                                                         if (numRead <=  0 ) {
                                                                 break ;
                                                         else {
                                                                 fos.write(buf,  0 , numRead);
                                                         }
 
                                                 else {
                                                         break ;
                                                 }
 
                                         }
                                 }
 
                                 conn.disconnect();
                                 fos.close();
                                 is.close();
                         catch (IOException e) {
                                 // TODO Auto-generated catch block
 
                                 e.printStackTrace();
                         }
                 catch (MalformedURLException e) {
                         // TODO Auto-generated catch block
 
                         e.printStackTrace();
                 }
 
                 return file;
         }
//打开APK程序代码
 
private void openFile(File file) {
                 // TODO Auto-generated method stub
                 Log.e( "OpenFile" , file.getName());
                 Intent intent =  new Intent();
                 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                 intent.setAction(android.content.Intent.ACTION_VIEW);
                 intent.setDataAndType(Uri.fromFile(file),
                                 "application/vnd.android.package-archive" );
                 startActivity(intent);
         }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值