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

安装:


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


卸载:


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


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

//下载apk程序代码


查看源码
打印 ?
01 protectedFile downLoadFile(String httpUrl) {
02 // TODO Auto-generated method stub
03 finalString fileName = "updata.apk";
04 File tmpFile = newFile("/sdcard/update");
05 if(!tmpFile.exists()) {
06 tmpFile.mkdir();
07 }
08 finalFile file = newFile("/sdcard/update/"+ fileName);
09
10 try{
11 URL url = newURL(httpUrl);
12 try{
13 HttpURLConnection conn = (HttpURLConnection) url
14 .openConnection();
15 InputStream is = conn.getInputStream();
16 FileOutputStream fos = newFileOutputStream(file);
17 byte[] buf = newbyte[256];
18 conn.connect();
19 doublecount = 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 intnumRead = 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 returnfile;
55 }
56 //打开APK程序代码
57
58 privatevoidopenFile(File file) {
59 // TODO Auto-generated method stub
60 Log.e("OpenFile", file.getName());
61 Intent intent = newIntent();
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 }


你可能感兴趣的:(android,package)