检测 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;
}
}
只有在函数不存在时才创建该函数。
我有一个 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;
}
}
只有在函数不存在时才创建该函数。