文档章节

Android学习 --有进度条下载对话框

SuShine
 SuShine
发布于 2015/06/25 15:27
字数 252
阅读 16
收藏 0

好吧 这是人人的一个面试 很简单 但是当时没做过 没办法 不会就是不会 

package cn.itcast.mobilesafe.engine;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.ProgressDialog;

public class DownLoadFileTask {
	
	/**
	 * 
	 * @param path 服务器文件路径
	 * @param filepath 本地文件路径 
	 * @param pd 传入dialog
	 * @return 本地文件对象
	 * @throws Exception
	 */
	public static File getFile(String path,String filepath,ProgressDialog pd) throws Exception{
		URL url = new URL(path);
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		conn.setRequestMethod("GET");
		conn.setConnectTimeout(5000);
		if(conn.getResponseCode() == 200){
			int total =  conn.getContentLength();
			pd.setMax(total);
			InputStream is = conn.getInputStream();
			File file = new File(filepath);
			FileOutputStream fos = new FileOutputStream(file);
			byte[] buffer = new byte[1024];
			int len = 0;
			int process = 0;
			while((len = is.read(buffer))!=-1){
				fos.write(buffer, 0, len);
				process +=len;
				pd.setProgress(process);
				Thread.sleep(50);
			}
			fos.flush();
			fos.close();
			is.close();
			
			return file;
		}
		return null;
	}
}

private class DownLoadFileThreadTask implements Runnable {
		private String path; // 服务器路径
		private String filepath; // 本地文件路径

		public DownLoadFileThreadTask(String path, String filepath) {
			this.path = path;
			this.filepath = filepath;
		}

		public void run() {
			try {
				File file = DownLoadFileTask.getFile(path, filepath,pd);
				Log.i(TAG,"下载成功");
				pd.dismiss();
				install(file);
			} catch (Exception e) {
				e.printStackTrace();
				Toast.makeText(getApplicationContext(), "下载文件失败", 0).show();
				pd.dismiss();
				loadMainUI();
				
			}

		}

	}

启动下载

DownLoadFileThreadTask task = new DownLoadFileThreadTask(info.getApkurl(), "/sdcard/new.apk");
					pd.show();
					new Thread(task).start();


本文转载自:http://blog.csdn.net/sfshine/article/details/8262489

共有 人打赏支持
SuShine
粉丝 124
博文 517
码字总数 149836
作品 0
朝阳
后端工程师
私信 提问
Android开发指南-用户界面-对话框

创建对话框Creating Dialogs 对话框通常是一个显示在当前活动前面的小窗口。下面的活动失去焦点而由对话框接受所有的用户交互。对话框通常被用来当做通知或者运行中的应用程序相关的短暂活动...

JavaGG
2010/03/24
0
0
Android应用自动更新功能代码实现

由于Android项目开源所致,市面上出现了N多安卓软件市场。为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量...

元来元去
2014/02/26
0
0
ubuntu环境下android开发平台的搭建

ubuntu环境下android开发平台的搭建 其实在Window下,我已经有过一段android开发经历,只是后来因为学业以及其他原因没有坚持下来。现在转战ubuntu系统,想重拾android开发的相关知识,并且想...

馨缘6009
2012/05/27
0
0
系出名门Android(3) - 对话框(Dialog)和通知(Notification)

系出名门Android(3) - 对话框(Dialog)和通知(Notification) 作者:webabcd 介绍 在 Android 中种对话框及各种通知效果的应用 常用对话框的使用,弹出式对话框、日期选择对话框、时间选择对话...

庸人谷
2012/12/28
0
0
android中给用户提醒的三种方式

一.Toast // 弹出吐司 Toast.makeText(getApplicationContext(), "吐司", 0).show(); 二.对话框: 1.确定取消对话框 public void click1(View view){ //对话框的创建器 AlertDialog.Builder ......

byronhs
2015/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
1
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
1
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
1
0
Redis 梳理笔记

安装 安装gccyum install gcc-c++下载传输到服务器上解压tar -xzvf *.tar.gzcd redis-3.2.9编译make安装 make PREFIX=/usr/local/redis install将配置文件拷贝出来cp redis...

晨猫
昨天
0
0
聊聊storm TridentWindowManager的pendingTriggers

序 本文主要研究一下storm TridentWindowManager的pendingTriggers TridentBoltExecutor.finishBatch storm-core-1.2.2-sources.jar!/org/apache/storm/trident/topology/TridentBoltExecut......

go4it
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部