javascript - 检测 javascriptinterface 方法是否存在
问题描述
我有一个 Android 项目,它已经在 Play 商店中并安装在许多设备上。在我以前的版本中,java 中没有任何方法可以检查从 javascript 调用的应用程序的版本。
然后我开发了一个新版本的应用程序并添加了一个 javascriptinterface 函数来返回安装的应用程序的版本。现在,如果他们的设备上安装了旧版本,我希望我的客户更新应用程序。
因为旧应用程序中不存在该 javascriptinterface 函数,所以当我为旧应用程序调用该方法时,它不会做任何事情,因为旧应用程序中不存在该方法。它在新应用程序中运行良好。
我的问题是:有没有办法从甚至没有定义该方法的旧应用程序版本中检测 javascriptinterface 函数是否存在???
解决方案
如果我做对了,那么在您的新版本中,java 会为 javascript 引擎添加一个新方法,从而window.getAppVersion()
产生当前版本(假设方法名称确实是»getAppVersion«)。
要检查该方法是否存在于 Javascript 中某个范围(window
在这种情况下),您可以执行以下操作:
if ('getAppVersion' in window) { … }
所以你可以在脚本的开头添加类似的东西:
if (!('getAppVersion' in window)) {
window.getAppVersion = function () {
//really old verion
return -Infinity;
}
}
这样,只有在函数不存在时才创建函数。
推荐阅读
- python - 项目中自定义第三方python包的正确方法
- java - 如何在java中使用本机android代码返回当前位置
- sql - 在 web2py 和 SQLFORM.grid 中使用两个条件查询
- css - 我可以以更简单的方式将 css 类指定为一种标签吗?
- php - sim800 和 Codeigniter CSRF 令牌问题
- gradle - Gradle:如何在控制台上打印依赖项工件 url
- react-native - 登录/注册后如何跳转另一个页面
- sorting - 根据多行中多个单元格的匹配条件以及 Google 表格中另一个表的排名返回值
- c# - 在发布和更改主机 RabbitMQ 中检测丢失的连接
- java - 关闭 Java EE 应用程序时内存泄漏未卸载单例