zoukankan      html  css  js  c++  java
  • Android实现应用下载并自动安装apk包

    安装:

    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         }
  • 相关阅读:
    不自导会专门样
    人撒娇地撒基督教扫ID祭扫我京东is啊单间
    随机生成字符
    阿朵洒洒的撒多撒多撒啊
    死循环
    ui其实比接口好做
    租到房子了
    阿里PTS基础版真的坑
    終于解決调用wordpress 4.3 xmlrpc api 发布包含分类的文章时返回“抱歉,文章类型不支持您的分类法”错误的問題
    诸恶莫作、众善奉行、自净其意、是诸佛教
  • 原文地址:https://www.cnblogs.com/chiuschen/p/3156004.html
Copyright © 2011-2022 走看看