本文实例讲述了AndroID编程使用WebVIEw实现文件下载功能的两种方法。分享给大家供大家参考,具体如下:
在应用中,通常会使用到文件下载功能,一般我们都是写一个下载 *** 作工具类,在异步任务中执行下载功能。
今天我们来看下如何使用WebVIEw的文件下载功能!
方法1,自定义下载 *** 作
1. 先来布局
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:tools="http://schemas.androID.com/tools"xmlns:ldm="http://schemas.androID.com/apk/res/com.ldm.learn"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"><WebVIEwandroID:ID="@+ID/test_wv"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:layout_margin="15dp" /></relativeLayout>
2. 实现自定义下载工具 *** 作异步线程类:
public class DownLoadThread extends Thread {private String downLoadUrl;private Context context;private fileOutputStream out = null;private file downLoadfile = null;private file sdCardfile = null;private inputStream in = null;public DownLoadThread(String downLoadUrl,Context context) {super();this.downLoadUrl = downLoadUrl;this.context = context;}@OverrIDepublic voID run() {try {URL httpUrl = new URL(downLoadUrl);httpURLConnection conn = (httpURLConnection) httpUrl.openConnection(); conn.setDoinput(true);// 如果打算使用 URL 连接进行输入,则将 Doinput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。conn.setDoOutput(true);// 如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。in = conn.getinputStream();if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { Toast.makeText(context,"SD卡不可用!",Toast.LENGTH_SHORT).show();return;}downLoadfile = Environment.getExternalStorageDirectory();sdCardfile = new file(downLoadfile,"download.apk");out = new fileOutputStream(sdCardfile);byte[] b = new byte[1024];int len;while ((len = in.read(b)) != -1) {out.write(b,len);}if (out != null) {out.close();}if (in != null) {in.close();}}catch (Exception e) {e.printstacktrace();} }}
3. 文件下载
public class MainActivity extends Activity {private WebVIEw test_wv;private String downLoadUrl = "http://as.baIDu.com/a/rank?cID=101&s=1&f=web_alad"; @OverrIDe protected voID onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVIEw(R.layout.activity_main);this.test_wv = (WebVIEw) findVIEwByID(R.ID.test_wv);test_wv.loadUrl(downLoadUrl);test_wv.setWebVIEwClIEnt(new WebVIEwClIEnt() {@OverrIDepublic boolean shouldOverrIDeUrlLoading(WebVIEw vIEw,String url) {vIEw.loadUrl(url);return super.shouldOverrIDeUrlLoading(vIEw,url);}});//要实现WebVIEw文件下载,实现这个监听就oktest_wv.setDownloadListener(new DownloadListener() {@OverrIDepublic voID onDownloadStart(String url,String userAgent,String contentdisposition,String mimetype,long contentLength) {Log.v("ldm",url);if (url.endsWith(".apk")) {//判断是否是.apk结尾的文件路径new DownLoadThread(url,MainActivity.this).start();}}});}}
方法2:通过系统自身下载方式下载(会在通知栏显示下载进度条)
只需要把这个方法改写如下:
test_wv.setDownloadListener(new DownloadListener() {@OverrIDepublic voID onDownloadStart(String url,url);Uri uri=Uri.parse(url);Intent intent=new Intent(Intent.ACTION_VIEW,uri);startActivity(intent);}});
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android文件 *** 作技巧汇总》、《Android视图View技巧总结》、《Android编程之activity *** 作技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源 *** 作技巧汇总》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
您可能感兴趣的文章:android中webview控件和javascript交互实例Android WebView使用方法详解 附js交互调用方法Android开发之WebView组件的使用解析Android使用WebView播放flash的方法Android实现WebView删除缓存的方法Android中WebView图片实现自适应的方法Android zip文件下载和解压实例Android实现文件下载进度显示功能Android 文件下载三种基本方式Android 将文件下载到指定目录的实现代码Android实现网络多线程文件下载android实现文件下载功能 总结以上是内存溢出为你收集整理的Android编程使用WebView实现文件下载功能的两种方法全部内容,希望文章能够帮你解决Android编程使用WebView实现文件下载功能的两种方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)