appView.addJavascriptInterface() 不适用于 API 17

2023-12-20

我可以使用我的phonegap java脚本函数和android 2.2中的java函数 但相同的代码不在 API 17 上运行。我应该做什么才能从 API 17 中的 java 脚本调用本机 java 代码。

我在我的java文件中使用这个代码

 objCustomNativeAccess = new CustomNativeAccess(this, appView);
            appView.addJavascriptInterface(objCustomNativeAccess,
                    "CustomNativeAccess");
    super.loadUrl("file:///android_asset/www/index.html");

我的 CustomNativeAccess 类是

public class CustomNativeAccess {
        private WebView mAppView;
        private DroidGap mGap;

        /**
         * Constructor
         * 
         * @param gap
         * @param view
         */
        public CustomNativeAccess(DroidGap gap, WebView view) {
            mAppView = view;
            mGap = gap;
        }

        /**
         * Get the device phone number
         * 
         * @return
         */
        public JSONObject login(String email, String password) {
            JSONObject object = new JSONObject();
                    object.put("Login_Status", login_status);
            object.put("date", dateString);
            return object;
        }

在我的java脚本中我使用这一行来调用这个登录函数

 var value = window.CustomNativeAccess.login(email,pass);

所以使用这个我成功地在 api 2.2 上调用这个但是当我在 api 17 上运行这个代码时它给了我错误

未捕获的类型错误:对象 [object Object] 在 file:///android_asset/www/index.html:81 处没有方法“登录”

我如何在 api 17 上使用它


在 API 17 上你需要做的就是用注释来注释你的方法@JavascriptInterface:

public class CustomNativeAccess {
   @JavascriptInterface

然后去掉构造函数部分:

/*private WebView mAppView;
    private DroidGap mGap;
    public CustomNativeAccess(DroidGap gap, WebView view) {
        mAppView = view;
        mGap = gap;
    }
*/

另请确保在项目中导入 JavascriptInterface:

 import android.webkit.JavascriptInterface;

您可以在这里阅读更多内容:Android 网页视图 http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface%28java.lang.Object,%20java.lang.String%29

编辑:您必须在您想要从 Javascript 访问的类中使用 @JavascriptInterface 注释每个方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

appView.addJavascriptInterface() 不适用于 API 17 的相关文章

  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • 在 Spring 中重构这个的最佳方法?

    private final ExecutorService executorParsers Executors newFixedThreadPool 10 public void parse List
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 在 KitKat 4.4.2 中获取 SDard 路径和大小

    我在 Google Play 上有一个设备信息应用程序 在该应用程序中我有存储信息 我知道 Android 4 4 在访问外部 SD 卡方面发生了一些变化 内部似乎没有给我带来问题 我的问题是 如何可靠地获取 KitKat 上 SD 卡的大
  • Android 中循环事件的星期几和时间选择器

    我想创建一个控件 允许用户在我的 Android 活动中选择一周中的某一天 星期一 和一天中的某个时间 下午 1 00 找不到任何关于此的好帖子 好吧 我想我已经明白了 我只是不喜欢这个解决方案 因为我在一周中的某一天使用的微调器与时间选择
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • Android应用程序可以像旧的普通java小程序一样嵌入到网页中吗?

    我对 android 平台一无所知 也无法在互联网上找到这个基本问题的答案 更新 好的 我本身无法嵌入 Android 应用程序 但是我可以在 Android Webbrowser 中嵌入 Java 的东西吗 不可以 您无法将 Androi
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • Export-PfxCertificate :无法导出不可导出的私钥

    我正在尝试导出我的自签名证书 以便可以将其导入到我的开发环境中的其他服务器 将使用 真实 证书进行生产 但它会引发以下错误 Export PfxCertificate 无法导出不可导出的私钥 要求是我需要导出证书并 允许导出私钥 但我很好奇
  • 强制 Windows 显示我的自定义文件类型的缩略图

    我想使用 C 中的 Windows OpenFileDialog 类来浏览我的应用程序的文件 然后 我希望这些文件能够在 Windows 的 缩略图 视图中显示预览 有没有一种简单的方法可以实现这一点 我认为应该有一种方法对文件进行编码 以
  • 在Go中的函数内定义递归函数

    我正在尝试在 Go 中的另一个函数中定义递归函数 但我很难获得正确的语法 我正在寻找这样的东西 func Function1 n int a 10 Function2 func m int int if m lt a return a re
  • 如何自定义 Facebook 的 sharer.php

    http www facebook com sharer sharer php u http 3A 2F 2Fwww google com http www facebook com sharer sharer php u http 3A
  • 通过preferences.xml中的Intent打开应用程序设置

    我想通过单击首选项条目来打开应用程序设置 所以我在preferences xml中添加了一个意图
  • 替换 Objective-C Foundation 函数实现

    有没有办法替换 Objective C Foundation 函数的实现 例如 NSClassFromString 函数 我当然知道类替换方法 https developer apple com library ios DOCUMENTAT
  • 如何使用 dplyr 将多列转变为新的多列

    我正在尝试将 3 列更改为更大表 包含更多列 中的 3 个新列 其中 3 个新列依赖于前 3 个现有列 第四个新列仅依赖于第四个现有列 基本上 我想在 3D 空间中旋转点的坐标 在 x y z 列中 并存储在新列 x rot y rot z
  • 安装 Python3 的 PySide

    当我尝试为 Python 3 6 安装 PySide 时 它 说它只兼容 Python 3 4 是否有任何解决方法可以为 Python 3 6 安装它 似乎仅支持以下 Python 版本 2 6 2 7 3 2 3 3 3 4 要获取最新的
  • HBase - java 中的 java.lang.NoClassDefFoundError

    我只是想使用 Java 与 Hbase 交互 import org apache hadoop conf Configuration import org apache hadoop hbase import org apache hado
  • 动态添加到 Highcharts

    我有一个 json 对象 我正在尝试将其添加到我的 highcharts 选项中 我可以通过 API 接收该对象 并将其传递给我的 highcharts 函数 但我无法将我的数据添加到它周围的静态数据中 var datas datas ge
  • 使用声明性数据绑定 ASP.NET 进行评估

    我一直在尝试使用声明性数据绑定 ASP NET 并与幕后发生的 魔法 作斗争 我如何让它在 ASP Net 2 0 中工作 这是在数据范围内FormView控制
  • 从提交历史记录中获取 GitHub 用户名

    我将一个存储库克隆到我的机器上 然后做了 git log 但在日志中 它显示了该人的全名和电子邮件 而不是他们的 github 用户名 有没有一种方法可以在不依赖 GitHub 网站的情况下将提交与用户关联 如果你想使用 git log 似
  • Google Sheets 功能可对行进行分组和连接

    样本表 https docs google com spreadsheets d 1AeP0sxDi0 3aaesUdCNTKfricIimjTMFaKO FX9 g50 edit usp sharing https docs google
  • 如何使用 htaccess 从 url 中删除 GET 参数?

    我的网站除了一页之外不使用任何 GET 参数 尽管如此 我可以看到 Google 成功地使用 GET 参数索引了我的一堆页面 这对于 SEO 重复内容 来说不太好 因此 我尝试编辑 htaccess 以在所有带 GET 参数的 url 到不
  • 订阅我自己的 C# 事件会造成内存泄漏吗?

    如果基类发布 C 事件并且派生类订阅该事件 即订阅其自身 事件订阅会阻止对象被垃圾收集吗 或者垃圾收集器是否足够聪明来检测这种循环引用情况 乍一看 似乎应该如此 但我很确定我已经看到了执行此操作的控制代码 这是一个如此基本的问题 我不敢相信
  • 在 jquery 中获取数据绑定值

    我正在使用 knockout js 设置跨度值 HTML 代码 span span 这工作正常并在用户界面上显示用户名 我正在尝试从 js 文件中获取该值 使用下面的代码 alert this attr data bind 这是这样的服务结
  • 调整 UITextField 或 UITextView 出现键盘时的界面

    我有一个表格 每个单元格都包含一个标签和一个文本字段 问题是 当我去编辑最后一行时 键盘隐藏了表格的下部 我看不到正在输入的内容 如何将界面移动到键盘上方以便看到正在输入的内容 谢谢 穆斯塔法 你需要注册你的 viewControllerU
  • Android + 致命异常:Timer-0(使用计时器删除 ImageView)

    在我的 Android 应用程序中 我使用计时器来使用 TIMER 显示相应的 ImageView 我收到一个错误 02 27 06 39 33 999 E AndroidRuntime 1325 FATAL EXCEPTION Timer
  • UISegmentedControl 选择的索引始终为 0?

    我有一个 UISegmentedControl 它有 6 个段 是我在 Interface Builder 中创建的 我在值更改时调用以下方法 IBAction segmentedChartButtonChanged id sender s
  • appView.addJavascriptInterface() 不适用于 API 17

    我可以使用我的phonegap java脚本函数和android 2 2中的java函数 但相同的代码不在 API 17 上运行 我应该做什么才能从 API 17 中的 java 脚本调用本机 java 代码 我在我的java文件中使用这个