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

安装:

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

卸载:

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

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

//下载apk程序代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值