gpt4 book ai didi

java - 屏幕锁定时的android webview loadurl

转载 作者:行者123 更新时间:2023-11-30 04:57:31 25 4
gpt4 key购买 nike

我有一个从 android webview 播放音乐的应用程序,我已经自动播放到下一首歌曲,为了播放下一首歌曲,我需要在 webview 中加载新的 url。一切正常。但是当我从 webview 添加在后台播放的选项时,我的问题就开始了,我构建了由 '@JavascriptInterface' 调用的 js 函数,将变量更改为 1 的 java 函数(examle nextVideo = 1)[无法从该函数加载 url] 和有计时器每秒检查变量并加载下一首歌曲。但是当屏幕锁定时,webview 发送 js 函数,但 java 函数无法加载下一个 url,只有当我打开应用程序时,下一个 url 才会开始加载。我大部分时间都花在谷歌上,但没办法……所以如果你能帮助我,谢谢你,变化很大!

这是java定时器代码:

 Timer t = new Timer();
new Timer().schedule(new TimerTask() {
@Override
public void run() { //loadnextvideo
runOnUiThread(new Runnable() {
public void run(){
if (nextVideo==1) {
// WebView webview2 = (WebView) findViewById(R.id.webview2);
//webview2.setVisibility(View.GONE);
webview2.loadUrl("javascript:nextVideo()");
nextVideo=0;
}}
});}

}, 0,1000);

最佳答案

loadUrl(url) 用于 url 而不是脚本。您可以将用于“@AddJavascriptInterface”的另一个文件 .java 或 .kt 分离到该类中,以将 java 的功能覆盖到 javascript

更新答案 kotlin 版本:

    fun initWebView(url: String, webView: WebView) {
val webView = WebView(this)
val webview.settings.apply {
useWideViewPort = true
loadWithOverviewMode = true
allowContentAccess = true
javaScriptEnabled = true
blockNetworkImage = false
domStorageEnabled = true
setAppCacheEnabled(true) // help load play musci on website
}

webView.webViewClient = object: WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, request:WebResourceRequest?): Boolean {
view?.loadUrl(url)
return true
}
}

webView.loadUrl(url)
}

您可以从 assets android 或其他网站的 url 加载 javascript。不要忘记使用缓存来加载播放

关于java - 屏幕锁定时的android webview loadurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com