android webview与js交互

傷城~ 2022-06-15 00:24 373阅读 0赞

webview与js交互可分为:webview调用js,及js调用webview

webview调用js

1 webview加载网页。

  1. webview.loadUrl(url);

2.webview调用网页方法

  1. webview.loadUrl("javascript:function()");

js调用webview

1.webview加载网页

  1. webview.loadUrl(url);

2.定义JavascriptInterface的接口类

3.webview添加JavascriptInterface

  1. //这里的object就是上一步定义的JavascriptInterface类,name就是你js里边调用的标识
  2. webviewMain.addJavascriptInterface(Object object, String name);

下边给出完整代码


activity_main.xml
这个就不用多说了

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" tools:context="com.yxdong.learn.MainActivity">
  2. <Button android:id="@+id/btn_main" android:text="加" android:layout_width="wrap_content" android:layout_height="wrap_content" />
  3. <WebView android:id="@+id/webview_main" android:layout_width="match_parent" android:layout_height="match_parent"></WebView>
  4. </LinearLayout>

JavaScriptInterface.java
这里直接使用的JavaScriptInterface命名的js接口类
这个类我写的很简单,
注意注意注意!!!重要的事情说三遍
@JavascriptInterface 不能少否则没有效果,不写编译器也不会报错

  1. public class JavaScriptInterface {
  2. Context mContext;
  3. public JavaScriptInterface(Context context){
  4. mContext=context;
  5. }
  6. //注意注意注意!!!重要的事情说三遍
  7. //@JavascriptInterface 不能少否则没有效果
  8. //这里就做了一个现实Toast的效果
  9. @JavascriptInterface
  10. public void showToast(){
  11. Toast.makeText(mContext, "I have dream", Toast.LENGTH_SHORT).show();
  12. }
  13. }

MainActivity.java

  1. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  2. private Button btnMain;
  3. private WebView webviewMain;
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. initView();
  9. }
  10. private void initView() {
  11. btnMain = (Button) findViewById(R.id.btn_main);
  12. webviewMain = (WebView) findViewById(R.id.webview_main);
  13. btnMain.setOnClickListener(this);
  14. //设置支持javascript
  15. webviewMain.getSettings().setJavaScriptEnabled(true);
  16. //加载网页,这里在asset目录下放置了一个网页
  17. webviewMain.loadUrl("file:///android_asset/test.html");
  18. //添加javascriptinterface 接口 通过该接口js就能访问接口类里的方法了
  19. //Android 是一个标识,可以随意自定义, 在js里通过该标识来访问接口类里的方法
  20. webviewMain.addJavascriptInterface(new JavaScriptInterface(this),"Android");
  21. }
  22. @Override
  23. public void onClick(View v) {
  24. switch (v.getId()) {
  25. case R.id.btn_main:
  26. //调用js里边的方法,每次点击webview上都会加1
  27. //"javascript:" 是固定写法
  28. webviewMain.loadUrl("javascript:add()");
  29. break;
  30. }
  31. }
  32. }

test.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>android webview与js交互</title>
  5. </head>
  6. <body>
  7. <p>计数</p>
  8. <p id="number">0</p>
  9. <button onclick="showToast()">显示系统Toast</button>
  10. <script type="text/javascript"> var i=0; function add() { document.getElementById('number').innerHTML=++i; } function showToast() { Android.showToast(); } </script>
  11. </body>
  12. </html>

发表评论

表情:
评论列表 (有 0 条评论,373人围观)

还没有评论,来说两句吧...

相关阅读

    相关 WebViewJS交互

    阅读:[JSBridge][] 前言:以下是webView和JS互相调用的基础介绍。 利用WebView调用网页上的JavaScript代码(java调用JS) 说白