Android中WebView的使用:
1.设置WebView的JavaScript可用
WebView main_mv = ((WebView) findViewById(R.id.main_wv));
main_mv.getSettings().setJavaScriptEnabled(true);
2.设置需要加载的Web url
main_mv.loadUrl(stringExtra);
3.android中加载URl默认是在手机的浏览器中加载,我们可以覆盖他的这个动作,达到使用WebView的加载方式
//使用WebView的浏览器
main_mv.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(stringExtra);
return super.shouldOverrideUrlLoading(view, request);
}
4.我们可以设置页面标题
//设置页面标题
main_mv.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
Webview_TV.setText(title);
}
});
5.当WebView加载失败和断网的情况下,会调用以下方法,以达到我们想要的界面
@Override//在加载WebView是断网或连接失败会调用次方法
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Log.e("发生错误","oooooooooooooo");
}
6.使用WebView进行下载
//设置下载监听
main_mv.setDownloadListener(new MyDownload());
//WebView下载监听的类
public class MyDownload implements DownloadListener{
@Override
public void onDownloadStart(String s, String s1, String s2, String s3, long l) {
Log.e("此类可以监听到需要下载的网址",s);
//开启线程进行下载
new HttpThread(s).start();
//调用手机自带下载
// Uri uri = Uri.parse(s);
// Intent intent = new Intent(Intent.ACTION_VIEW,uri);
// startActivity(intent);
}
}
7.调用下载的类
/**
* Created by 常城 on 2016/11/26.
*/
public class HttpThread extends Thread {
private String urls;
public HttpThread(String url){
this.urls = url;
}
@Override
public void run() {
try {
Log.e("下载开始","--------------");
URL url = new URL(urls);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
InputStream inputStream = null;
FileOutputStream fileOutputStream = null;
if (conn.getResponseCode() == conn.HTTP_OK){
inputStream = conn.getInputStream();
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File extern= Environment.getExternalStorageDirectory();
File file = new File(extern,"test.apk");
fileOutputStream = new FileOutputStream(file);
}
byte[] b = new byte[6*1024];
int len;
while ((len = inputStream.read(b)) != -1){
if (fileOutputStream != null){
fileOutputStream.write(b,0,len);
}
}
}
if (fileOutputStream != null){
fileOutputStream.close();
}
if (inputStream != null){
inputStream.close();
Log.e("下载结束","------");
}
Log.e("下载结束","=======");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Android与js互相调用
1.Android调用js
//android代码
//调用js方法
main_mv.loadUrl("javascript:javaCallJs()");
//js代码
<!--此方法被Android调用-->
function javaCallJs(){
alert(123);
}
2.js调用Android代码
//Android中代码
//绑定js接口
main_mv.addJavascriptInterface(new JsBrige(),"JsBrige");
//该类封装了js调用的方法
public class JsBrige{
@JavascriptInterface
public void init(String a){
Toast.makeText(WebViewActivity.this,a,Toast.LENGTH_LONG).show();
}
}
//js代码
<body>
<!--引入mui框架-->
<!--
作者:330860504@qq.com
时间:2016-11-26
描述:
-->
<input type="button" value="调用java方法" onclick="show()" />
<script type="text/javascript" charset="utf-8">
mui.init();
<!--此方法被Android调用-->
function javaCallJs(){
alert(123);
}
function show(){
<!--调用Android中的方法-->
JsBrige.init("123");
}
</script>
</body>