android webview和js交互实现
来源:互联网 发布:悉尼动物园 知乎 编辑:程序博客网 时间:2024/05/24 06:24
要实现交互,就是让程序调用网页的function,让网页调用程序的方法。
Java调用JS:
- 在程序中
无参数
webView.loadUrl(“javascript:methodName()”)
有参数
webView.loadUrl("javascript:methodName("+conent+")")
- 在网页中
<script type="text/javascript"> function methodName() { //此处为无参的执行方法 } function methodName(content) { //此处为有参的执行方法 }</script>
需要注意:
1.需要设置webSettings.setJavaScriptEnabled(true);
2.
webView.loadUrl(“javascript:methodName(parameterValues)”)
是不可以在 页面加载时执行。想要加载时执行可以
mWebView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); mWebView.loadUrl("javascript:methodName()");// } });//在网页加载结束后执行
js调用java
- 在程序中
mWebView.addJavascriptInterface(new className(), "jsInterfaceName");
- 在网页中
<script type="text/javascript"> window.jsInterfaceName.methodName()`//methodName为class的方法 window.jsInterfaceName.methodName(content)//调用一个有参的方法 </script>
一个网页动态适配屏幕的例子:
demo.html
<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript"> function sayHello(str1,str2){ document.getElementById("t").style.width = str1+"px"; document.getElementById("t").style.height = str2+"px"; } </script> </head> <body style="padding: 0;margin: 0;"> <div id="t" style="background-color: red;height: 400px; width: 300px;"> <div id='b'><a onclick="window.demo.clickOnAndroid()">点击调用java</a></div> </div> </body></html>
MainActivity主要方法
public class MainActivity extends Activity { WebView mWebView; int i,j; int flag=0; Handler mHandler=new Handler(); Button btn; @SuppressWarnings("deprecation") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.webview); j=getWindowManager().getDefaultDisplay().getHeight()/2; i=getWindowManager().getDefaultDisplay().getWidth()/2; WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo"); mWebView.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); mWebView.loadUrl("javascript:sayHello("+i+","+j+")"); } }); mWebView.loadUrl("file:///android_asset/demo.html"); } final class DemoJavaScriptInterface { DemoJavaScriptInterface() { } public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(MainActivity.this, "java调用", Toast.LENGTH_LONG).show(); } }); } } }
0 0
- android webview和js交互实现
- android webview 和 js交互
- Android WebView和JS交互
- webview 和android js 交互
- android webview 和 js交互
- Android WebView和JS交互
- android js和webview交互
- Android webView和js交互
- Android Webview和js交互
- webview,js和android交互
- android JS和webview交互
- Android webview使用 webview和js交互
- Android通过使用webview实现和js的交互
- Android demo-->webview实现js交互
- Android在webview中实现js交互
- 通过WebView实现JS和本地交互
- android webview js交互 第一节 (java和js交互)
- android webview js交互 第一节 (java和js交互)
- MySQL的存储引擎
- 如何切换 SVN 用户名
- window.open打开/关闭制定页面
- Zookeeper + Hadoop + HBase Cluster Installer
- hihoCoder1097 1098 1109:最小生成树
- android webview和js交互实现
- C语言的那些秘密之--函数返回局部变量
- 桥式转换(bridged cast)
- 解决UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position 108: ordinal not in range(12
- LINUX彻底清除历史记录命令
- jQuery $.each用法
- MySQL表结构优化
- Java程序员必备的开发工具
- C++界面库