In Android, you can use the webview control to browse webpages. By using this control, we can make a simple browser, as shown in figure 1.
Figure 1 Running Effect
1. webview
When using the webview control, you must first define a webview control in the XML layout file. The method is as follows:
1<Webview2Android: ID= "@ + ID/webview"3 Android: layout_width= "Match_parent"4 Android: layout_height= "Match_parent"/>
Webview provides many methods. For example, we can use the cangoback () method to determine whether the previous opened webpage can be returned from the webpage; Use gettitle () and geturl () method to obtain the title and URL path of the current webpage; Use loadurl (string URL) to load the webpage to be opened, and so on. The followingCodeYou can use the loadurl () method to open the Baidu homepage in the webview control.
1PrivateWebview mwebview;2Mwebview = (webview)This. Findviewbyid (R. Id. webview );3Mwebview. loadurl ("http://www.baidu.com /");
2. websettings
Websettings is used to set the attributes and status of webview. Websettings and webview exist in the same lifecycle. You can use the following method to obtain the websettings object.
Websettings = mwebview. getsettings ();
When creating a webview, the system will make some default settings for the webview. After we get the websettings object through the above method, we can retrieve the default attributes and status of the webview from the websettings object, of course, we can also set the default attributes and status of webview through the websettings object.
Websettings provides some common methods to set the attributes and status of webview:
(1) setallowfileaccess (Boolean allow); // you can enable or disable access to file data.
(2) setbuiltinzoomcontrols (Boolean enabled); // you can specify whether scaling is supported.
(3) setdefaultfontsize (INT size); // you can specify the default font size.
(4) setjavascriptenabled (Boolean flag); // you can specify whether Javascript is supported.
(5) setsupportzoom (Boolean support); // you can specify whether Zoom is supported.
3. webviewclient
Webviewclient is used to assist webview in handling various notifications, requests, and other events. You can use the setwebviewclient () method of webview to specify a webviewclient for the webview object. The specific implementation method is as follows:
1 Mywebviewclient = New Mywebviewclient (); 2 Mwebview. setwebviewclient (mywebviewclient ); 3 4 /* 5 * Class: mywebviewclient, used to assist webview and process various notifications, requests, and other events 6 * Author: blog Park-still indifferent 7 */ 8 Private Class Mywebviewclient Extends Webviewclient { 9 10 // Override the parent method to display the newly opened webpage in the current webview. 11 Public Boolean Shouldoverrideurlloading (webview view, string URL ){ 12 View. loadurl (URL ); 13 Return True ; 14 } 15 16 }
As you can see, in the above Code, the shouldoverrideurlloading () method of the parent class webviewclient is rewritten in the subclass mywebviewclient to display the newly opened web page in the current webview, instead of calling the browser provided by the Android system for access.
Webviewclient also provides many methods, such as the following:
(1) doupdatevisitedhistory (webview view, string URL, Boolean isreload); // update history
(2) onformresubmission (webview view, message dontresend, message resend); // re-request webpage data
(3) onloadresource (webview view, string URL); // load resources provided by the specified URL
(4) onpagefinished (webview view, string URL); // The webpage has been loaded.
(5) onpagestarted (webview view, string URL, bitmap favicon); // start loading the webpage.
(6) onreceivederror (webview view, int errorcode, string description, string failingurl); // report error information
4. webchromeclient
Webchromeclient is used to assist webview in processing Javascript dialogs, website icons, website titles, and webpage loading progress.
Similarly, we can use the setwebchromeclient () method of webview to specify a webchromeclient for the webview object.
In webchromeclient, The onprogresschanged (webview view, int newprogress) method is called when the webpage loading progress changes. When the webpage icon changes, onreceivedicon (webview view, bitmap icon) method is called. When the webpage title changes, the onreceivedtitle (webview, String title) method is called. By using these methods, we can easily obtain information such as the webpage loading progress, webpage title, and icon, as shown in the following code:
1 Mywebchromeclient = New Mywebchromeclient (); 2 Mwebview. setwebchromeclient (mywebchromeclient ); 3 4 /* 5 * Class: Used to assist webview and process JavaScript dialogs, website icons, website titles, loading progress, etc. 6 * Author: blog Park-still indifferent 7 */ 8 Private Class Mywebchromeclient Extends Webchromeclient { 9 10 // Obtain the page loading progress, which is displayed in the textview control in the upper right corner. 11 Public Void Onprogresschanged (webview view, Int Newprogress ){ 12 If (Newprogress <100 ){ 13 String progress = newprogress + "%" ; 14 Mtextview_progress.settext (Progress ); 15 } Else { 16 Mtextview_progress.settext ("" ); 17 } 18 } 19 20 // Obtain the webpage title as an applicationProgramIS DISPLAYED 21 Public Void Onreceivedtitle (webview view, String title ){ 22 Mainactivity. This . Settitle (title ); 23 } 24 25 }
5. webview and JavaScript
In webview, not only HTML code can be run, but more importantly, webview can be called with JavaScript. That is to say, you can get the content of webview in Javascript. At the same time, you can also call the methods in Javascript in webview.
The following describes how to call methods in Javascript in webview.
Here, I use the Baidu map API (an HTML document embedded with JavaScript), which provides the following JavaScript method:
1 /* ******************************* */ 2 /* Locate */ 3 /* ******************************* */ 4 VaR City = New Bmap. localsearch (MAP, {renderoptions: {map: map, autoviewport:True }}); 5 6 Function Findplace (place) 7 { 8 City. Search (place ); 9 }
What we need to do is to call the findplace () method in webview to complete the location search. In webview, the method in Javascript is called through the Code webview. loadurl ("javascript: Method Name. The following code obtains the place name you want to search for from the edittext control, and then calls the findplace () method in Javascript for search.
1 /* 2 * Function: Click Event processing. 3 * Author: blog Park-still indifferent 4 */ 5 Public Void Onclick (view ){ 6 Switch (View. GETID ()){ 7 Case R. Id. imagebutton_search: // Search for place names 8 String STR = Medittext_input.gettext (). tostring (); 9 String url = "javascript: findplace ('" + STR + "')" ; 10 Mwebview. loadurl (URL ); 11 Break ; 12 } 13 }
For example, if we search for "Yuan mingyuan", we can see the search result shown in 2.
Figure 2 search for "Yuan mingyuan"