Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android webview JavaScript加载URL设置变量sdk 24+;发布谷歌分析_Javascript_Android_Webview_Google Analytics - Fatal编程技术网

Android webview JavaScript加载URL设置变量sdk 24+;发布谷歌分析

Android webview JavaScript加载URL设置变量sdk 24+;发布谷歌分析,javascript,android,webview,google-analytics,Javascript,Android,Webview,Google Analytics,在我的应用程序中,我需要在WebView上设置一个JavaScript变量,用于跟踪,JavaScript将用于保持本机分析跟踪和web跟踪同步。当我将compiledSdkVersion和targetSdkVersion设置为23时,它当前正在工作 在OnPageStarted中,我有这个代码 String javaScript = String.format("javascript: var clientId = '%s';", nativeClientId); webView.loadUr

在我的应用程序中,我需要在WebView上设置一个JavaScript变量,用于跟踪,JavaScript将用于保持本机分析跟踪和web跟踪同步。当我将compiledSdkVersion和targetSdkVersion设置为23时,它当前正在工作

OnPageStarted
中,我有这个代码

String javaScript = String.format("javascript: var clientId = '%s';", nativeClientId);
webView.loadUrl(javaScript);
当我将compileSdkVersion和targetSdkVersion增加到24时,这将不再有效。Javascript表示未定义该变量。当我将版本设置回23时,它再次工作

我在WebView文档中找到,android.webkit.ValueCallback)

兼容性说明。针对N或更高版本的应用程序,JavaScript 空WebView中的状态不再在loadUrl(字符串)等导航中保持。例如,在调用loadUrl(字符串)之前定义的全局变量和函数将不存在于加载的页面中。应用程序应该使用addJavascriptInterface(对象、字符串)来跨导航持久化JavaScript对象

如何将我的javascript转换为使用
AddJavascriptInterface
来设置此clientId,以便javascript仍然可以读取变量而无需更改web代码


任何建议或其他想法都会大有帮助

您使用的是
onPageStarted()
还是
onPageFinished()
clientId
何时读取?您可以切换到
addJavascriptInterface()
,但这有其自身的问题,包括需要更改所有JavaScript代码(更改
clientId
对其他内容的引用)。这在你的情况下可行吗?此外,您是否尝试切换到
evaluateJavascript()
,以防这是
loadUrl()
限制?客户端ID正在页面上以javascript读取,并且
OnPageFinished()
已过了需要设置的时间。我尝试了
evaluteJavascript()
,它在23时工作,但是当
将dkversion
targetSdkVersion
编译为24时,它也停止工作。是的,页面上的JavaScript代码无法更改,因此,我试图找到一种方法来设置JavaScript变量,但不知道是否有方法使用
addJavascriptInterface()
“是的,页面上的JavaScript代码无法更改”--然后我怀疑您必须将
targetSdkVersion
保持为23,直到可以修复为止。无论您使用
addJavascriptInterface()
WebMessage
还是
WebMessagePort
,都不能从
WebView
外部设置
clientId
全局。