最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程使用WebView實(shí)現(xiàn)文件下載功能的兩種方法

 更新時(shí)間:2018年02月13日 09:58:20   作者:遲做總比不做強(qiáng)  
這篇文章主要介紹了Android編程使用WebView實(shí)現(xiàn)文件下載功能的兩種方法,涉及Android基于WebView的相關(guān)文件傳輸與線程操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Android編程使用WebView實(shí)現(xiàn)文件下載功能的兩種方法。分享給大家供大家參考,具體如下:

在應(yīng)用中,通常會(huì)使用到文件下載功能,一般我們都是寫一個(gè)下載操作工具類,在異步任務(wù)中執(zhí)行下載功能。

今天我們來(lái)看下如何使用WebView的文件下載功能!

方法1,自定義下載操作

1. 先來(lái)布局

<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"
>
<WebView
android:id="@+id/test_wv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp" />
</RelativeLayout>

2. 實(shí)現(xiàn)自定義下載工具操作異步線程類:

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;
}
@Override
public void run() {
try {
URL httpUrl = new URL(downLoadUrl);
HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
 conn.setDoInput(true);// 如果打算使用 URL 連接進(jìn)行輸入,則將 DoInput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 true。
conn.setDoOutput(true);// 如果打算使用
 URL 連接進(jìn)行輸出,則將 DoOutput 標(biāo)志設(shè)置為 true;如果不打算使用,則設(shè)置為 false。默認(rèn)值為 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, 0, 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()
 {
@Override
public boolean shouldOverrideUrlLoading(WebView
 view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
});
//要實(shí)現(xiàn)WebView文件下載,實(shí)現(xiàn)這個(gè)監(jiān)聽(tīng)就ok
test_wv.setDownloadListener(new
 DownloadListener() {
@Override
public void onDownloadStart(String
 url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Log.v("ldm", url);
if (url.endsWith(".apk")) {//判斷是否是.apk結(jié)尾的文件路徑
new DownLoadThread(url, MainActivity.this).start();
}
}
});
}
}

方法2:通過(guò)系統(tǒng)自身下載方式下載(會(huì)在通知欄顯示下載進(jìn)度條)

只需要把這個(gè)方法改寫如下:

test_wv.setDownloadListener(new
 DownloadListener() {
@Override
public
 void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
Log.v("ldm",
 url);
Uri
 uri=Uri.parse(url);
Intent
 intent=new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
});

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android文件操作技巧匯總》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android布局layout技巧總結(jié)》、《Android開(kāi)發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

库尔勒市| 永安市| 高邑县| 英德市| 防城港市| 平远县| 三穗县| 石楼县| 象州县| 德令哈市| 青阳县| 白水县| 蓝田县| 镇康县| 柘荣县| 临夏县| 江达县| 隆昌县| 佛教| 固原市| 正宁县| 科技| 象山县| 通海县| 南宁市| 三门峡市| 扎囊县| 牟定县| 七台河市| 延安市| 临夏县| 白水县| 隆回县| 迁西县| 尼木县| 兰坪| 鸡西市| 汉寿县| 民权县| 瑞金市| 通山县|