当前位置: 首页 > article >正文

Android studio与JS交互

文章目录

  • 前言
  • 一、html
  • 二、使用步骤
    • 1.
    • 2.AS
  • 总结


前言

最近在使用Android Studio的WebView,有些功能要AS与JS交互。

一、html

html文件

<!DOCTYPE html>
<html>
<!--javascript-->
<head>
    <meta charset="utf-8">
    <title>Carson_Ho</title>
    <style>
        #h1 {
          text-align: center;
        }

    </style>
    <script>
        // Android需要调用的方法
           function callJS(str){
              document.getElementById("changeText").innerHTML=".This is another paragraph => "+str;
             // alert("Android调用了JS的callJS方法");
           }
        function callAndroid(str)
        {
         //调用了AS方法
         Android.FunctionName("I'm "+str);
         document.getElementById("changeText").innerHTML="*    ************";
        }
    </script>

</head>
<body>
<h1 id="h1">.    This is a html</h1>
<p id="changeText">*    ************</p>
<button type="button" id="button1" onclick="callAndroid('JS')">JSCallAndroid</button>
</body>
</html>

二、使用步骤

1.


2.AS

1:

public class AndroidToJS extends Object{
    private static final String TAG="AndroidToJS";
    @JavascriptInterface
    public void FunctionName(String str)
    {
        Log.e(TAG,"JS调用了Android的FunctionName方法:info=>"+str);
    }
}

2:

void Initial()
{//
 webView.loadUrl(url);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        WebSettings settings=webView.getSettings();
        settings.setUseWideViewPort(true);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR_MR1) {
            settings.setLoadWithOverviewMode(true);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
            settings.setAllowFileAccess(true);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
            settings.setAllowFileAccess(true);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
            settings.setBlockNetworkLoads(false);//
        }
        settings.setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new AndroidToJS(),"Android");
}

void testJS()
{
  webView.evaluateJavascript("javascript:callJS('A')", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                Log.e("JS Mes","---value---\n"+value);
            }
        });
        //无参数版
        
}


总结

这里对文章进行总结:


http://www.kler.cn/a/415282.html

相关文章:

  • 10个Word自动化办公脚本
  • 知识库助手的构建之路:ChatGLM3-6B和LangChain的深度应用
  • 开发需求总结19-vue 根据后端返回一年的数据,过滤出符合条件数据
  • vue3 ajax获取json数组排序举例
  • 【数据仓库 | Data Warehouse】数据仓库的四大特性
  • 人工智能与传统控制系统的融合发展
  • Android Studio 右侧Gradle窗口只有test的task问题解决
  • pytest+allure生成报告显示loading和404
  • 浅谈C#库之DevExpress
  • Rust 组织管理
  • 知识点回顾
  • python的文件操作练习
  • 基于Java Springboot社区助老志愿者服务平台
  • 如何在 GitHub 上下载并切换到仓库的历史版本
  • Java学习,反射
  • 常用指标采集 exporter
  • 前端网络安全分析
  • 知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 开源项目:纯Python构建的中后台管理系统
  • 解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法
  • 【sqlcipher】pc端sqflite使用过程中遇到的问题
  • 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言
  • 【青牛科技】电动工具电流反馈型相位控制电路D2010
  • 传输控制协议(TCP)
  • 计算机网络:IP协议详细讲解