检测 javascriptinterface 方法是否存在

Detect if a javascriptinterface method exists or not

我有一个 Android 项目,该项目已在 Play 商店中并安装在许多设备上。在我以前的版本中,java 中没有任何方法来检查从 javascript.

调用的应用程序的版本

然后我开发了一个新版本的应用程序,并在安装的return版本的应用程序中添加了一个java脚本接口函数。现在我希望我的客户在他们的设备上安装旧版本时更新应用程序。

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

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

如果我没看错,那么在您的新版本中,java 为 java 脚本引擎添加了一个新方法,这样 window.getAppVersion() 会产生当前版本(假设方法名称确实是 »getAppVersion«)。

要检查该方法是否存在于 Javascript 特定范围(在本例中为 window),您可以这样做:

if ('getAppVersion' in window) { … }

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

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

只有在函数不存在时才创建该函数。