相关疑难解决方法(0)

如何在Android webview中停止播放YouTube视频?

如何停止在我的网页浏览中播放的YouTube视频?当我点击后退按钮时,视频不会停止,而是在后台继续播放.

码:

webView = (WebView) findViewById(R.id.webview); 
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(false); 
webView.getSettings().setSupportZoom(false);
webView.loadData(myUrl,"text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud)

youtube video android webview

62
推荐指数
6
解决办法
5万
查看次数

Android webview,在assets文件夹中加载javascript文件

我已经看过很多次这个问题,但仍然无法让我的代码工作.

我希望我的webview加载一些URL(比如www.google.com),然后应用一些存储的javascript assets/jstest.js,其中包含以下内容:

function test(){
document.bgColor="#00FF00"; //turns to green the background color
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试加载JS的地方:

@Override  
public void onPageFinished(WebView view, String url){
    view.loadUrl("javascript:(function() { "
                + " document.bgColor='#FF0000';" //turns to red the background color
                + " var script=document.createElement('script'); "
                + " script.setAttribute('type','text/javascript'); "
                + " script.setAttribute('src', 'file:///android_asset/jstest.js'); "
                + " script.onload = function(){ "
                + "     test(); "
                + " }; "
                + " document.getElementsByTagName('head')[0].appendChild(script); "
                + "})()"); 
} 
Run Code Online (Sandbox Code Playgroud)

我知道这里的javascript有效,因为背景颜色实际上变为红色,但由于某种原因它不会加载jstest.js.我认为问题可能在文件路径中(我确定javascript代码的每一行都是正确的),但它看起来对我来说是正确的.该文件位于正确的文件夹中.

我错过了什么?

编辑:

由于WebResourceResponse课程仅适用于API …

javascript android webview android-webview

16
推荐指数
1
解决办法
4万
查看次数

WebViewClient不调用shouldOverrideUrlLoading

问题很简单.在应用程序中,我们希望跟踪显示的当前URL.为此,我们使用shouldOverrideUrlLoading回调来WebViewClient保存url到每个更新的类字段.这是相关代码:

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true); 
    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            mCurrentUrl = url;

            // If we don't return false then any redirect (like redirecting to the mobile
            // version of the page) or any link click will open the web browser (like an
            // implicit intent).
            return false;
        }



        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            ...
        }
    });
    mWebView.loadUrl(mInitialUrl);
Run Code Online (Sandbox Code Playgroud)

但是,至少有一种情况,即回调永远不会被触发,并且mCurrentUrl字段不会更新.

网址:https://m.pandora.net/es-es/products/bracelets/556000

上次更新的URL(在单击产品时永远不会调用shouldOverrideUrlLoading):https://m.pandora.net/es-es/products/bracelets

我尝试过像onPageStarted()这样的回调,但是url也被过滤了,因为它的受保护代码似乎没有可访问的上游. …

android webview android-webview

15
推荐指数
7
解决办法
2万
查看次数

使用Javascript在WebView中填写表单

我正试图从Android中的Webview填充Webforms.我已经在这里找到了这段代码:自动填写webview中的字段

String username = "cristian";
webview.loadUrl("javascript:document.getElementById('username').value = '"+username+"';");
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不明白我要打开我要填写的页面.

setContentView(R.layout.web);
final WebView mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl(url);
String user="u";
String pwd="p";
mWebView.loadUrl("javascript:document.getElementById('username').value = '"+user+"';document.getElementById('password').value='"+pwd+"';");
Run Code Online (Sandbox Code Playgroud)

当我以这种方式尝试时,网站会显示但表单中没有任何值.

在此先感谢您的帮助

javascript android android-webview

14
推荐指数
2
解决办法
2万
查看次数

如何在WebView中添加JavaScript函数,稍后在提交reCAPTCHA时从HTML调用它

我在WebView中添加了一个JavaScript函数(Kotlin):

val webView = findViewById(R.id.webview) as WebView
webView.getSettings().setJavaScriptEnabled(true)
webView.addJavascriptInterface(this, "android")
webView.getSettings().setBuiltInZoomControls(false)
webView.loadUrl(url)

webView.webViewClient = object : WebViewClient() {
    override fun onPageFinished(view: WebView, url: String) {
        super.onPageFinished(view, url)
        webView.loadUrl("javascript:(function captchaResponse (token){" +
                        "      android.reCaptchaCallbackInAndroid(token);" +
                        "    })()")
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数工作正常,但问题是它在WebView中添加它时会立即运行.我只想将它作为JavaScript函数包含在内,只有当用户填写reCAPTCHA时才能从HTML调用它.我怎样才能做到这一点?

javascript android recaptcha webview android-webview

10
推荐指数
2
解决办法
2507
查看次数

Android 10 (api-29) 文件写入

任何人都可以提供有关如何在公开可用的 Android Q 上保存文件的准确教程,因为getExternalFilesDir()无法在 Android Q+ 中使用。

我已经处理这个问题好几天了,找不到任何解决方案。

我正在尝试下载一些 css、js 和 HTML 文件,以便将它们加载到 Webview 上。

现在,我有以下代码,用 Kotlin 编写:

companion object {
    private const val TAG = "MainActivity"
    private var rootDir: Path? = null
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    ...

    rootDir = getExternalFilesDir(null)
    Log.v(TAG, "RootDir: ${rootDir!!.path}")

    val cacheDir = File(rootDir!!, "cache")
    if(!cacheDir.exists()) {
         Log.v(TAG, "Creating cache dir (${cacheDir.path})")
         try {
            if (cacheDir.mkdirs())
                Log.v(TAG, "Created cache dir correctly")
            else
                Log.v(TAG, "Could not create cache dir")
        }catch (ex: …
Run Code Online (Sandbox Code Playgroud)

permissions android file android-permissions

9
推荐指数
1
解决办法
8530
查看次数

Android - 如何在WebView中访问本地存储值?

是否可以从WebView访问本地存储数据?以下是我需要从应用的WebView中读取的Chrome值的屏幕截图.我需要从我的应用程序中的"值"列中获取数据.

我想要做的是,例如,在我的WebView中访问google.com,然后从"nullctx"键中读取值"1".

Chrome本地存储空间

任何有关如何阅读这些值的帮助将不胜感激.

android android-webview

6
推荐指数
1
解决办法
1万
查看次数

将 CSS 或 JS 注入 Android 上的 Chrome

有没有办法在加载匹配的 URL 时将(非恶意)JavaScript(或 CSS)语句注入到 Android 上的 Chrome 中?

基本上,我想修改一些网站的外观。

一个例子是m.facebook.com
我想注入如下内容:

#header: {position:fixed; margin-top:-2px}
#root:{margin-top:40px}
Run Code Online (Sandbox Code Playgroud)

不幸的是,Google 没有为移动平台扩展插件 API!

有什么想法吗?

javascript css plugins android google-chrome

5
推荐指数
1
解决办法
4735
查看次数

Android Webview Javascript注入

我正在尝试将javascript注入我在webview中加载的页面.例如,我通过在自定义WebViewClient类中覆盖'onPageFinished'将值放入给定的文本框中:

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url)
    {
        super.onPageFinished(view, url);
        view.loadUrl("javascript:" +
            "document.getElementById('elid').value = 'texthere';");
    }
}
Run Code Online (Sandbox Code Playgroud)

这在浏览网站和单击链接时正常工作,但是当我按下后退按钮时,java/javascript似乎没有正确执行(文本框没有正确填写.

按下后退按钮时会调用onPageFinished函数,但它似乎是在当前页面上执行javascript,而不是在返回的页面上执行.

android webview

1
推荐指数
1
解决办法
9583
查看次数