Android WebAPP开发入门
使用WebView開發web app
如果想發行一個web應用(或只包含網頁)作為客戶端的一部分,可以使用webview。WebView繼承至View可以用于activity的布局來顯示網頁。但不包括一個完整網頁瀏覽器的任何特征,例如:導航控制、地址欄等。默認的Webview所能做是顯示一個網頁。
使用WebView一個很有用的常見情況是:應用程序提供的一些信息可能需要更新,例如:最終用戶協議、用戶指南等。在這些情境下使用WebView可以使應用避免更新升級。在Android應用程序中,創建一個Activity包含WebView,可以使用它顯示托管在網上的文檔。
還有一種有用的情況是:應用程序向用戶提供數據總是需要請求一個網絡連接來檢索數據,例如:電子郵件。這種情況下,你可以發現使用WebView來顯示網頁和所有用戶數據比起執行網絡請求、解析數據、渲染布局要更簡單。因此,可以設計一個適合Android設備的網頁,然后在加載網頁的Android應用程序中實現WebView。
在應用程序中添加WebView
在使用< WebView > 標簽添加到布局中,如下:
<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/webview"android:layout_width="fill_parent"android:layout_height="fill_parent"/>WebView加載網頁使用 loadUrl(),如下:
WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");網頁加載需要INTERNET權限,在AndroidManifest.xml文件中添加權限:
<manifest ... ><uses-permission android:name="android.permission.INTERNET" />... </manifest>在WebView中使用JavaScript
如果計劃在WebView中使用JavaScript加載網頁,需要啟用JavaScript。一旦JavaScript啟用,就可以在應用程序代碼和JS代碼之間創建接口。
WebView默認不啟用JavaScript。啟用如下:
WebView myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true);JS 與Android交互
當開發一個專門為WebView在Android應用程序中設計的Web應用程序時,可以在JavaScript代碼和客戶端Android代碼之間創建接口。例如:JS調用一個Android的方法來顯示一個對話框,而不是使用JS的alert()函數。
通過addJavascriptInterface(),綁定JS與Android代碼。如下:
注意:如果你的 targetSdkVersion 是17或更高,想要獲得JS就必須給對應的Android方法(方法必須是public)添加@JavascriptInterface注解
使用addJavascriptInterface()綁定:
WebView webView = (WebView) findViewById(R.id.webview); webView.addJavascriptInterface(new WebAppInterface(this), "Android"); //這里的參數"Android",將在JS中由于調用Android方法,如:Android.showToast(toast);網頁通過JS方法調用Android:
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /><script type="text/javascript">function showAndroidToast(toast) {Android.showToast(toast);} </script>處理頁面導航
當用戶從WebView中的網頁點擊鏈接時,默認行為是Android啟動一個處理URL的應用程序。通常,默認的網頁瀏覽器會打開并加載目標URL。但是,可以重寫這種行為使網頁在WebView中打開。
用戶點擊打開連接,只需為WebView提供一個WebViewClient,使用setWebViewClient():
如果您希望更多地控制單擊的鏈接加載的位置,創建自己的WebViewClient重寫shouldOverrideUrlLoading() 方法,如下:
private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (Uri.parse(url).getHost().equals("www.example.com")) {// This is my web site, so do not override; let my WebView load the pagereturn false;}// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLsIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;} }為WebView創建一個新的WebViewClient實例:
WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new MyWebViewClient());網頁瀏覽歷史
當WebView覆蓋URL加載時,它會自動累積訪問過的網頁的歷史。通過goBack() 和goForward()可以再瀏覽歷史中后退、前進。如下,當在Activity中按返回鍵時:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {// Check if the key event was the Back button and if there's historyif ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {myWebView.goBack();return true;}// If it wasn't the Back key or there's no web page history, bubble up to the default// system behavior (probably exit the activity)return super.onKeyDown(keyCode, event); }如果用戶存在實際的瀏覽記錄canGoBack()返回true。同樣使用canGoForward()檢查是否有向前的歷史。如果不檢查,當用戶到達歷史結束的時候goBack()和GgoForward()就什么也做不了。
總結
以上是生活随笔為你收集整理的Android WebAPP开发入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dvd转wmv及wmv转flv参数(3M
- 下一篇: HTML5文本框右侧加一个放大镜,htm