apk 下载并自动安装

       今天带来的是apk的下载和自动安装,其实这个挺简单的,代码量不大,那就直接上代码吧! 
 

    第一步 是点击按钮进行:

    //按钮(Button)
    public void downAndInstall(View v) {
        // 下载apk,传入链接
        downLoadFile("http://static.nduoa.com/apk/569/569962/1287163/com.tencent.qqmusic.apk");

        // 自动安装
        AutoInstall.setUrl("/sdcard/update/updata.apk");

        AutoInstall.install(DownAndInstallActivity.this);

    }

第二步就是下载apk

// 下载apk程序代码
    protected File downLoadFile(String httpUrl) {
        final String fileName = "updata.apk";
        // 创建文件路径
        File temFile = new File("/sdcard/update");
        // 如果文件不存在。就创建
        if (!temFile.exists()) {
            temFile.mkdir();
        }
        // 得到文件路径
        final File file = new File("/sdcard/update/" + fileName);

        try {
            // 实例化URL对象,指定文件下载的地址
            URL url = new URL(httpUrl);
            // 获取HttpURLConnection 对象
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            // 得到字节读取流对象
            InputStream is = conn.getInputStream();
            // 实例化文件写入流,将下载的文件写入sd卡
            FileOutputStream fos = new FileOutputStream(file);

            byte[] buf = new byte[256];

            conn.connect();

            double count = 0;

            // 网络请求失败(getsponseCode==200时,请求成功)
            if (conn.getResponseCode() >= 400) {
                Toast.makeText(DownAndInstallActivity.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 (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return file;
    }

第三步就是自动安装apk(这里是调用系统的安装,自然是辅助类)

public class AutoInstall {

    private static String mUrl;
    private static Context mContext;

    /**
     * 外部传进来的url以便定位需要安装的apk
     * 
     * @param url
     */

    public static void setUrl(String url) {
        mUrl = url;
    }

    /**
     * 安装
     * 
     * @param context
     *            接收外部传进来的context
     * 
     */

    public static void install(Context context) {
        mContext = context;
        // 核心是下面几句代码
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new File(mUrl)),
                "application/vnd.android.package-archive");
        mContext.startActivity(intent);
    }


      那么到这里apk的下载和自动安装就完成了,不过这里要说明的就是:这里的点击下载是在主线程实现的,在下载时一定会阻碍UI界面。具体怎么实现,这里就不过多讲解了

 

     如果网友们有什么好建议以及好的完善方法,请一定要不吝指教,让我多多学习啊!thanks

 

 

 

 

 

 

 

 

 

 

 

2014-02-11

 

 

 

转载于:https://www.cnblogs.com/boyuanmeng/p/3544924.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值