Android中WebView的使用总结及Java与Javascript的相互调用
2015-04-15 10:20
881 查看
Webview可以提供一个web应用程序或者一个网页做为Android客户端的一部分,但它又不包含网页浏览器的很多特性,基本上只是用于显示一个网页。
首先,创建以下类
将以上创建的类注入到JavaScript
注意:你绑定到JavaScript的目标是在另外一个线程运行,而不是创建它的线程。
将WebView添加到应用
<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" />使用 loadUrl()来载入页面
WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.loadUrl("http://www.example.com");如果要访问网络,必须添加INTERNET权限
<?xml version="1.0" encoding="utf-8"?><pre name="code" class="html"><manifest ... > <uses-permission android:name="android.permission.INTERNET" /> ... </manifest>
如果加载本机HTML文件,路径如下:
file:///android_asset/index.html 加载项目assets下的文件index.html file:///sdcard/index.html 加载sdcard下的index.html文件
在WebView中使用JavaScript
首先必须添加以下设置WebView myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true);绑定JavaScript到Android
首先,创建以下类
public class WebAppInterface { Context mContext; /** Instantiate the interface and set the context */ WebAppInterface(Context c) { mContext = c; } /** Show a toast from the web page */ @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } }注意:如果你的
targetSdkVersion大于等于17,你必须在你需要在JavaScript中调用的Android方法前面添加@JavascriptInterface
注释
。
将以上创建的类注入到JavaScript
WebView webView = (WebView) findViewById(R.id.webview); webView.addJavascriptInterface(new WebAppInterface(this), "Android");对应的HTML代码
<pre name="code" class="html"><input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> <script type="text/javascript"> function showAndroidToast(toast) { Android.showToast(toast); } </script>
注意:你绑定到JavaScript的目标是在另外一个线程运行,而不是创建它的线程。
处理页面导航
当用户在WebView里面点击了一个网页链接之后,Android默认启动一个应用来处理这些链接,通常是web浏览器。但是你可以通过重写WebView方法来实现在WebView中打开这些链接。WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setWebViewClient(new WebViewClient());
private class MyWebViewClient extends WebViewClient { @Override public 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 page return false; } // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(intent); return true; } }当用户点击back键时,应用默认是退出,通过以下代码可以将back键改成后退
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // Check if the key event was the Back button and if there's history if ((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); }
相关文章推荐
- Android中Webview使用javascript调用事先定义好的Java函数
- Android WebView使用之JavaScript调用Java代码注意事项
- Android开发,WebView下Java和JavaScript相互调用(1)
- android webview中使用Java调用JavaScript方法并获取返回值
- Android在使用WebView时,通过Javascript调用JAVA函数
- WebView的使用总结-js与java之前的相互调用
- Android WebView中使用Java调用JavaScript方法并获取返回值
- Android webview中JavaScript与Java方法的相互调用Demo
- android webview中使用Java调用JavaScript方法并获取返回值_Android
- Android之Webview使用Java代码和JS相互调用
- android webview native与JavaScript相互调用 java与JavaScript相互调用
- Android在使用WebView时,通过Javascript调用JAVA函数
- Android 使用WebView中的JavaScript调用Android方法
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
- Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】
- Android 实现WebView与JavaScript相互调用//支持javaScript对android方法调用 mWebView.addJavascriptInterface(n
- Android WebView —— Java 与 JavaScript 交互总结
- IOS之JavaScript与OC的相互调用:WKwebview 的使用