Android - 从Webview调用Java

2024-01-08

我想从Webview调用Java。

I have JavaScriptInterface below:

class JavaScriptInterface{

    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void open(String message){
        //do something
    }

}

I add JavaScriptInterface

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

在我的 HTML 中,我有这个 onclick 事件:

onclick="window.JSInterface.open('hi');"

我也尝试过:

onclick="JSInterface.open('hi');"

我在 logcat 中遇到此错误:

04-16 14:55:15.829: W/dalvikvm(721): JNI WARNING: jarray 0x4050cf68 points to non-array object (Ljava/lang/String;)
04-16 14:55:15.829: I/dalvikvm(721): "WebViewCoreThread" prio=5 tid=9 NATIVE
04-16 14:55:15.829: I/dalvikvm(721):   | group="main" sCount=0 dsCount=0 obj=0x40521218 self=0x1f6cf8
04-16 14:55:15.829: I/dalvikvm(721):   | sysTid=729 nice=0 sched=0/0 cgrp=default handle=2059824
04-16 14:55:15.839: I/dalvikvm(721):   | schedstat=( 5717972154 3300872155 567 )
04-16 14:55:15.839: I/dalvikvm(721):   at android.webkit.WebViewCore.nativeTouchUp(Native Method)
04-16 14:55:15.839: I/dalvikvm(721):   at android.webkit.WebViewCore.nativeTouchUp(Native Method)
04-16 14:55:15.839: I/dalvikvm(721):   at android.webkit.WebViewCore.access$3300(WebViewCore.java:53)
04-16 14:55:15.839: I/dalvikvm(721):   at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1158)
04-16 14:55:15.863: I/dalvikvm(721):   at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 14:55:15.869: I/dalvikvm(721):   at android.os.Looper.loop(Looper.java:130)
04-16 14:55:15.869: I/dalvikvm(721):   at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:629)
04-16 14:55:15.869: I/dalvikvm(721):   at java.lang.Thread.run(Thread.java:1019)
04-16 14:55:15.869: E/dalvikvm(721): VM aborting

如何修复它?或者另一种方式来做到这一点?

Thanks


  1. 您需要通过设置在 WebView 中启用 Javascript

    final WebView myWebView = (WebView) findViewById(R.id.webview);
    myWebView.setVerticalScrollBarEnabled(false);
    myWebView.setHorizontalScrollBarEnabled(false);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    
  2. 您需要在 HTML DOM 中加载 JS。

    JsInterface jsInterface = new JsInterface();
    jsInterface.wordDef = content;
    myWebView.addJavascriptInterface(jsInterface, "interfaces");
    myWebView.loadUrl("file:///android_asset/some.html");
    
  3. 从 HTML/JS 调用您的界面

    /**JAVA CODE **/
    public class JsInterface {
     public String someString;
     Context mContext;
    
     public void JsInterface(Context c){
       mContext = c;
     }
    
     public String someFunction(){
      Log.v("JSInterface", ""+someString);
      return someString;
     }
    }
    
    /* JS Code */
    function addData(){
        var data = interfaces.someFunction();
    }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 从Webview调用Java 的相关文章

  • 如何对这个字符串进行子串化

    我想得到这个字符串的 4 个部分 String string 10 trillion 896 billion 45 million 56873 我需要的4个部分是 10万亿 8960亿 4500万 和 56873 我所做的是删除所有空格 然
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • 计数物体和更好的填充孔的方法

    我是 OpenCV 新手 正在尝试计算物体的数量在图像中 我在使用 MATLAB 图像处理工具箱之前已经完成了此操作 并在 OpenCV Android 中也采用了相同的方法 第一步是将图像转换为灰度 然后对其进行阈值计算 然后计算斑点的数
  • 找不到处理意图 com.instagram.share.ADD_TO_STORY 的活动

    在我们的 React Native 应用程序中 我们试图让用户根据视图 组件中的选择直接将特定图像共享到提要或故事 当我们尝试直接使用 com instagram share ADD TO FEED 进行共享时 它以一致的方式完美运行 但是
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Android SIP 来电使用带有广播接收器的服务

    大家好 其实我正在尝试创建一个应用程序 支持基于 SIP 通过互联网进行音频呼叫 这里使用本机 sip 我遇到了来电问题 我已经完成了服务的注册部分 但是在接听电话时我无法接听电话 请帮助我 Service file package exa
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号
  • 如何将 google+ 登录集成到我的 Android 应用程序中?

    大家好 实际上我需要通过我的应用程序从 google 登录人们 现在我阅读了 google 上的文档 其中指出 要允许用户登录 请将 Google Sign In 集成到您的应用中 初始化 GoogleApiClient 对象时 请求 PL
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript

随机推荐

  • 如何编写Linux驱动模块调用/使用另一个驱动模块?

    我正在开发一个 Linux 驱动程序可加载模块 我必须在我的驱动程序中使用另一个设备 某种驱动程序堆叠在另一个驱动程序上 如何在我的驱动程序中调用 使用其他驱动程序 我认为它们都在内核中 所以可能有一种方法可以直接使用另一个驱动程序 您将需
  • FileStream.close() 不会为其他进程释放文件

    我在 Page Load 调用的函数中有以下代码 启动 Visual Studio 后首次加载页面时 一切正常 但此后对文件的任何其他打开调用都会返回IOException File is in use by another process
  • Expo EAS:如何将eas更新分支与构建通道链接?

    我有一个带有 EAS 的 expo v 46 0 0 项目 具有以下构建配置 eas json cli version gt 1 1 0 build production channel production env APP ENV pro
  • 找不到 Flyway maven 插件

    在我的 pom xml 中 我有
  • 一般填充不同的类成员

    我正在开发一个具有多个 11 Web 服务调用的 Web 服务应用程序 对于每个 Web 服务 我需要从字符串数组填充 Soap Body 如下所示 if aMessage int DCSSCustomerUpdate V3 Branch
  • 假设浮点数在 C 中使用 IEEE754 浮点数表示是否安全?

    浮点是在 C 中定义的实现 因此没有任何保证 我们的代码需要可移植 我们正在讨论是否可以在我们的协议中使用 IEEE754 浮点 出于性能原因 如果我们在发送或接收数据时不必在定点格式之间来回转换 那就太好了 虽然我知道平台和架构之间在大小
  • Pandas Dataframe 分组和标准差

    给定一个以下格式的 pandas 数据框 GroupNo at1 at2 at3 at4 1 0 02 1 12 1 88 3 2 1 6 11 1 13 0 88 5 2 4 2 02 1 16 2 88 0 2 3 0 20 0 12
  • 中的 ListBoxItem 样式?

    我可以放一个xamlStyle for ListBoxItem in
  • 用户位置的自定义注释视图不移动地图视图

    我们可以在 iOS 中为用户当前位置提供自定义注释视图吗 我需要用我自己的自定义视图 比如一些 ping 引脚 删除蓝点 带圆圈 是否有可能做到这一点 如果我们这样做 当用户位置发生变化时 该图钉是否会移动到新位置 或者我们需要以编程方式处
  • node.js websocket 模块已安装,但无法在脚本中运行

    我刚刚安装了node js microsoft Visual 以便能够安装websocket 它安装得很好 C Users Administrator gt npm install websocket npm http GET https
  • 为 linq groupby 编写自定义比较器

    同样 这个示例是我的实际问题的一个非常简化的版本 涉及 linq 分组的自定义比较器 我做错了什么 下面的代码产生下面的结果 1 2 0 4 1 0 4 1 0 1 1 0 然而我期待以下结果 因为 1 1 和 1 2 之间的距离 clas
  • 改变这是什么

    有没有办法改变 THIS 指向的内容 class foo foo fooinstance new foo foo otherfooinstance new foo void foo bar this otherfooinstance foo
  • 错误号2058无法加载插件authentication_windows_client:找不到指定的模块

    MySQL 有一个插件 允许根据当前用户的 Windows 凭据进行用户身份验证 该插件是 authentication windows dll 我从 SQLyog 收到以下错误消息 错误号 2058 插件authentication wi
  • 更改 Flash 播放器音频输出设备

    有没有办法改变Flash播放器的音频输出设备 如果没有的话 有没有swf播放器有这种可能性 谢谢 直到几分钟前我才遇到一个关于此的问题 我的 XP 盒子有两个音频设备 一个 iMic USB 音频 I O 设备 我已将桌面扬声器永久插入其中
  • 如何从反应应用程序中的公共文件夹导入文件?

    我在 public 文件夹中有一个 javascript 文件 我想将该文件导入到文件夹 src components 中的组件 projectFolder publicFolder index html recorder js srcFo
  • eclipse 从 root 显示 README

    以下项目结构并不罕见 项目A 目录 项目B 目录 ProjectX 目录 变更日志 文件 许可证 文件 自述文件 文件 这种结构 README 位于根目录中 得到了不同在线 Git 解决方案 如 github com bitbucket o
  • MDX - NON EMPTY 函数更快?

    我当时的假设是NON EMPTY必须尽可能避免使用该子句 因此 当我意外地发现它实际上使查询速度更快时 我感到震惊 示例如下 select Measures Count Of Requests on 0 Client Client Numb
  • Laravel - 与软删除数据的隐式路由模型绑定

    我有一个小问题 有两种用户角色 一种是普通成员 一种是管理员 成员可以删除博客 并且在删除 软删除 博客后他们将无法看到该博客 而管理员仍然可以看到该博客 即使它是软删除的 示例代码 Route file Route get blog bl
  • AngularJS 指令链接函数未被调用

    我正在尝试将 Angular http auth 库与引导模式窗口一起使用 模态框工作正常 但我在指令方面遇到问题 这是一个 jsfiddle 链接 http jsfiddle net jCUSh 85 http jsfiddle net
  • Android - 从Webview调用Java

    我想从Webview调用Java I have JavaScriptInterface below class JavaScriptInterface private Activity activity public JavaScriptI