码迷,mamicode.com
首页 > 移动开发 > 详细

浅谈Android之webView及交互

时间:2016-05-06 15:22:43      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

记得有一段时间安卓的webview挺火的,很多都喜欢用h5来开发页面。不过相对于原声安卓,webview的缺点显而易见,慢,耗电,用户体验不好。或许对开发人员还好,因为可以跨平台(ios,安卓都能用),而且开发难度也不是很大。安卓本身的webview是基于webkit浏览器的,而如果用过支付宝或者微信其实就能发现,他们肯定是进行了很多改进,把网页一下拉就能看到xxx提供技术支持。

下面这段代码介绍了webview的简单用法,以及如何通过安卓通过post方法去访问一个webview。

import org.apache.http.util.EncodingUtils;

import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends ActionBarActivity {

	private WebView wb;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		wb = (WebView) findViewById(R.id.webview);
		//因为webview是用来加载网页的,所以android为他提供了一些浏览器操作
		//goBack()后退
		//goForward()前进
		//zoomIn()放大网页
		//zoomOut()缩小网页
		//wb.loadUrl("");这个方法还算常用,可以用来加载网上的url,也可以加载本地的html页面
		//wb.loadDataWithBaseUrl(baseurl,data,mimeType,encoding)使用webview来加载html代码,第一个参数是指定要加载的html代码,其余的猜都能猜到
		wb.setVerticalScrollbarOverlay(true); //指定的垂直滚动条有叠加样式
        WebSettings settings = wb.getSettings();
        settings.setJavaScriptEnabled(true);//让其支持javascript
        settings.setUseWideViewPort(true);//设定支持viewport

        settings.setLoadWithOverviewMode(true);

        settings.setBuiltInZoomControls(true);

        settings.setSupportZoom(true);//设定支持缩放

        String postData = "key1=value1&key2=value2";
       
        wb.postUrl("http://116.228.21.162:9127/umsFrontWebQmjf/umspay", EncodingUtils.getBytes(postData, "utf-8"));//通过post方法访问URL,EncodingUtils为org.apache.http.util包下的类
        wb.setWebViewClient(new WebViewClient() {//对url状态进行监听
            @Override
            public void onPageFinished(WebView view, String url) {
                if (url.equals("http://116.228.21.162:9127/umsFrontWebQmjf/payInfo!backSuccessPage.ac")) {
                   // getEvenice();
                }
                super.onPageFinished(view, url);
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                Log.i("info", "start......" + url);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.i("info", "should over" + url);
                return super.shouldOverrideUrlLoading(view, url);
            }
        });
		
	}

}

这里我简单介绍一下js对安卓和webview进行交互。

html代码

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
<script type="text/javascript">

function appendText(a){
	var div = document.getElementById('content');
	div.innerHTML = div.innerHTML + a + '<br/>';
}


</script>
</head>
<body>
	这是一个本地的HTML页面<br/>
	<a href="tel:9527">
		<img src="images/getready.png">
	</a>
	<br/>
	<a href="javascript:plugin.call('9527');">直接调用java方法</a>
	
	<br/>
<div id="content">
</div>	
	
</body>
</html>

Java代码
public class MainActivity extends Activity {

	private WebView webView;


	@SuppressLint("JavascriptInterface")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		webView = (WebView) findViewById(R.id.webview);
		//webView.loadUrl("http://www.baidu.com");
		webView.loadUrl("file:///android_asset/index.html");
		
		//开启使用Javascript函数
		webView.getSettings().setJavaScriptEnabled(true);
		//将一个java对象传递到HTML页面中
		//plugin就是页面中js对象的名称
		webView.addJavascriptInterface(new MyPlugin(), "plugin");
	}

	class MyPlugin{
		public void call(String number){
			Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));
			startActivity(intent);
		}
	}
	
	
	public void append(View btn){
		//调用js函数
		webView.loadUrl("javascript:appendText('找不到工作了怎么办?');");
	}

}
Xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"/>
    
    <Button 
        android:layout_width="fill_parent"
        android:layout_weight="0"
		android:layout_height="wrap_content"
        android:text="调用Js函数"
        android:onClick="append"/>

</LinearLayout>



浅谈Android之webView及交互

标签:

原文地址:http://blog.csdn.net/l_vaule/article/details/51322930

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!