在我的应用程序中,我需要在webviews上设置一个JavaScript变量,以便跟踪javascript将用于保持本机分析跟踪和Web跟踪同步的用途。当我将compileSdkVersion和targetSdkVersion设置为23时,它当前正在工作。
在OnPageStarted
我有这段代码。
String javaScript = String.format("javascript: var clientId = '%s';", nativeClientId);
webView.loadUrl(javaScript);
当我将compileSdkVersion和targetSdkVersion增加到24时,这不再有效。 Javascript说这个变量没有定义。当我将版本设置回23时,它会再次运行。
我在WebView docs https://developer.android.com/reference/android/webkit/WebView.html#evaluateJavascript(java.lang.String,android.webkit.ValueCallback中找到了
兼容性说明。针对N或更高版本的应用程序,JavaScript 来自空WebView的状态不再在loadUrl(String)等导航中持久存在。例如,在加载的页面中不存在调用loadUrl(String)之前定义的全局变量和函数。应用程序应该使用addJavascriptInterface(Object,String)来跨导航持久化JavaScript对象。
如何将我的javascript转换为使用AddJavascriptInterface
来设置此clientId,以便JavaScript仍然可以读取变量而无需更改网络代码?
任何建议或其他想法都会有很大帮助!