多语言展示
当前在线:1166今日阅读:176今日分享:34

android中如何实现后台下载应用到sd卡上

android中如何实现后台下载应用到sd卡上。这个是在应用更新的时候一定要做的一件事件。
方法/步骤
1

这个过程之前,你要先 判断SD卡是否存在,并且是否具有读写权限Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED在有权限的情况下,才能再写代码。

2

接下来是实现这个下载的过程。private class downloadApkThread extends Thread { @Override public void run() { try { // 判断SD卡是否存在,并且是否具有读写权限 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 获得存储卡的路径 String sdpath = Environment.getExternalStorageDirectory() + '/'; mSavePath = sdpath + 'download'; URL url = new URL(mHashMap.get('url')); // 创建连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect(); // 获取文件大小 int length = conn.getContentLength(); // 创建输入流 InputStream is = conn.getInputStream(); File file = new File(mSavePath); // 判断文件目录是否存在 if (!file.exists()) { file.mkdir(); } File apkFile = new File(mSavePath, mHashMap.get('name')); FileOutputStream fos = new FileOutputStream(apkFile); int count = 0; // 缓存 byte buf[] = new byte[1024]; // 写入到文件中 do { int numread = is.read(buf); count += numread; // 计算进度条位置 progress = (int) (((float) count / length) * 100); // 更新进度 mHandler.sendEmptyMessage(DOWNLOAD); if (numread <= 0) { // 下载完成 mHandler.sendEmptyMessage(DOWNLOAD_FINISH); break; } // 写入文件 fos.write(buf, 0, numread); } while (!cancelUpdate);// 点击取消就停止下载. fos.close(); is.close(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 取消下载对话框显示 mDownloadDialog.dismiss(); } };

3

这个时候你还要在你的mainfest文件中加上下列权限。代码如下。       

推荐信息