检测是否存在javascriptinterface方法

时间:2018-08-22 06:22:17

标签: javascript android android-webview

我有一个Android项目,该项目已经在Play商店中,并且已安装在许多设备上。在我以前的版本中,java中没有任何方法可以检查从javascript调用的应用程序的版本。

然后,我开发了新版本的应用程序,并添加了javascriptinterface函数以返回已安装应用程序的版本。现在,如果他们的设备上安装了旧版本,我希望我的客户端更新应用程序。

因为旧应用程序中不存在javascriptinterface函数,所以当我为旧应用程序调用该方法时,它不执行任何操作,因为该方法在旧应用程序中不存在。在新应用中可以正常工作。

我的问题是: 有什么方法可以检测甚至没有定义该方法的旧应用程序版本中是否存在javascriptinterface函数???

1 个答案:

答案 0 :(得分:0)

如果我做对了,那么,在您的新版本中,java为javascript引擎添加了一个新方法,使得window.getAppVersion()产生当前版本(假设方法名称的确是» getAppVersion«)。

要检查Javascript中是否存在某种方法(在这种情况下为window),可以执行以下操作:

if ('getAppVersion' in window) { … }

因此您可以在脚本的开头添加类似的内容:

if (!('getAppVersion' in window)) {
  window.getAppVersion = function () {
    //really old verion
    return -Infinity;
  }
}

这样,仅当函数不存在时,您才能创建该函数。