现在的位置: 首页 > 综合 > 正文

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

2017年12月05日 ⁄ 综合 ⁄ 共 3654字 ⁄ 字号 评论关闭

安装:

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

卸载:

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

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

//下载apk程序代码

01 protected 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  
58 private 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         }

抱歉!评论已关闭.