你们好,最近小活发现有诸多的小伙伴们对于webview文件夹可以删除吗,android webview这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 [java] view plaincopyprint?
2、 mWebView.setWebViewClient(new WebViewClient(){
3、 public boolean shouldOverrideUrlLoading(WebView view, String url) {
4、 view.loadUrl(url);
5、 return true;
6、 }
7、 });
8、 mWebView.setWebViewClient(new WebViewClient(){
9、 public boolean shouldOverrideUrlLoading(WebView view, String url) {
10、 view.loadUrl(url);
11、 return true;
12、 }
13、 });
14、
15、
16、 4.如果什么都不做,浏览网页点击“后退”键,整个浏览器会调用finish()自行结束。如果您想向后浏览网页而不是启动浏览器,
17、 Back事件需要在当前活动中处理和使用。
18、 [java] view plaincopyprint?
19、 public boolean onKeyDown(int keyCode, KeyEvent event) {
20、 if ((keyCode==KeyEvent.KEYCODE_BACK) mWebView.canGoBack()) {
21、 mWebView.goBack();
22、 return true;
23、 }
24、 return super.onKeyDown(keyCode, event);
25、 }
26、 public boolean onKeyDown(int keyCode, KeyEvent event) {
27、 if ((keyCode==KeyEvent.KEYCODE_BACK) mWebView.canGoBack()) {
28、 mWebView.goBack();
29、 return true;
30、 }
31、 return super.onKeyDown(keyCode, event);
32、 }
33、
34、 接下来,我们来了解一下android中的webview是如何支持javascripte自定义对象的。在w3c标准中,js有窗口、历史、文档等标准对象。
35、 同样,我们可以在开发浏览器的时候定义自己的对象,调用手机系统的函数,这样就可以用js为所欲为了。
36、 看一个例子:
37、 [java] view plaincopyprint?
38、 view plaincopy to clipboardprint?
39、 public class WebViewDemo extends Activity {
40、 private WebView mWebView;
41、 private Handler mHandler=new Handler();
42、 public void onCreate(Bundle icicle) {
43、 super.onCreate(icicle);
44、 setContentView(R.layout.webviewdemo);
45、 mWebView=(WebView) findViewById(R.id.webview);
46、 WebSettings webSettings=mWebView.getSettings();
47、 webSettings.setJavaScriptEnabled(true);
48、 mWebView.addJavascriptInterface(new Object() {
49、 public void clickOnAndroid() {
50、 mHandler.post(new Runnable() {
51、 public void run() {
52、 mWebView.loadUrl('javascript:wave()');
53、 }
54、 });
55、 }
56、 }, 'demo');
57、 mWebView.loadUrl('file:///android_asset/demo.html');
58、 }
59、 }
60、 public class WebViewDemo extends Activity {
61、 private WebView mWebView;
62、 private Handler mHandler=new Handler();
63、 public void onCreate(Bundle icicle) {
64、 super.onCreate(icicle);
65、 setContentView(R.layout.webviewdemo);
66、 mWebView=(WebView) findViewById(R.id.webview);
67、 WebSettings webSettings=mWebView.getSettings();
68、 webSettings.setJavaScriptEnabled(true);
69、 mWebView.addJavascriptInterface(new Object() {
70、 public void clickOnAndroid() {
71、 mHandler.post(new Runnable() {
72、 public void run() {
73、 mWebView.loadUrl('javascript:wave()');
74、 }
75、 });
76、 }
77、 }, 'demo');
78、 mWebView.loadUrl('file:///android_asset/demo.html');
79、 }
80、 }
81、
82、 我们来看AddjavaScriptInterface(Object Obj,String接口名)的方法,它将一个Java对象绑定到一个javascript对象。
83、 javascript对象名是interfaceName(demo ),作用域是全局的。以这种方式初始化webview后,
84、 [html] view plaincopyprint?
85、 html
86、 mce:script language='javascript'!--
87、 function wave() {
88、 document.getElementById('droid').src='android_waving.png';
89、 }
90、 //--/mce:script
91、 body
92、 a onClick='window.demo.clickOnAndroid()'
93、 img id='droid' src='android_normal.png' mce_src='android_normal.png'/br
94、 Click me!
95、 /a
96、 /body
97、 /html
98、 html
99、 mce:script language='javascript'!--
100、 function wave() {
101、 document.getElementById('droid').src='android_waving.png';
102、 }
103、 //--/mce:script
104、 body
105、 a onClick='window.demo.clickOnAndroid()'
106、 img id='droid' src='android_normal.png' mce_src='android_normal.png'/br
107、 Click me!
108、 /a
109、 /body
110、 /html
111、 这样我们就可以在javascript中调用java对象的clickOnAndroid()方法,也可以在这个对象中定义很多方法(比如发短信,调用联系人列表等手机系统功能。
112、 ),其中wave()方法就是用Java调用javaScript的一个例子。
113、 下面是几个知识点:
114、 1)为了让WebView从apk文件加载资产,Android SDK提供了一个带有前缀“file://Android _ asset/”的架构。WebView遇到这样的模式,
115、 转到当前包中的assets目录来查找内容。如上面的‘file://Android _ asset/demo . html’。
116、 2)addJavascriptInterface方法中要绑定的Java对象和方法应该在另一个线程中运行,而不是在构造它的线程中运行,这也是使用Handler的目的。
117、
118、 总结:
119、 1. Add permission: the license' android.permission.INTERNET' must be used in AndroidManifest.xml, otherwise, an error will appear that the webpage is unavailable.
120、 2. Generate a network view component in the activity: WebView webView=new WebView (this);
121、 3.设置WebView的基本信息:
122、 如果访问的页面中有Javascript,webview必须设置为支持Javascript。
123、 webview.getSettings().setJavaScriptEnabled(true);
124、 触摸对焦有效。
125、 requestFocus();
126、 取消滚动条
127、 this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
128、 4.设置要由WevView显示的网页:
129、 互联网用:webview。loadurl(' http://www。谷歌。com’);
130、 对于本地文件:webview . loadurl(' file://Android _ asset/xx . html ');本地文件存储在:assets文件中。
131、 5.如果要点击链接,要自己处理,而不是在新打开的安卓系统的浏览器中响应链接。
132、 将事件监听对象(webview客户端)添加到WebView。
133、 重写其中的一些。
134、 shouldOverrideUrlLoading:对网页中超链接按钮的响应。
135、 当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url
136、 onLoadResource
137、 onPageStart
138、 onPageFinish
139、 onReceiveError
140、 onReceivedHttpAuthRequest
141、 6、如果用webview点链接看了很多页以后,如果不做任何处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身,如果希望浏览的网页回退而不是退出浏览器,
142、 需要在当前Activity中处理并消费掉该Back事件。
143、 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。
144、 [java] view plaincopyprint?
145、 public boolean onKeyDown(int keyCoder,KeyEvent event){
146、 if(webView.canGoBack() keyCoder==KeyEvent.KEYCODE_BACK){
147、 webview.goBack(); //goBack()表示返回webView的上一页面
148、 return true;
149、 }
150、 return false;
151、 }
以上就是android webview这篇文章的一些介绍,希望对大家有所帮助。