标签: webchromeclient

setWebViewClient与setWebChromeClient有什么区别?

Android中的setWebViewClientvs. 之间的区别是什么setWebChromeClient

android webviewclient webchromeclient

219
推荐指数
4
解决办法
12万
查看次数

WebViewClient和WebChromeClient是互斥的吗?

从这个很好的解释有关之间的差异WebViewClient,并WebChromeClient似乎如果你使用一个,你不应该使用其他的(对于相同的WebView对象).

我的理解是否正确?

如果没有,何时会同时使用WebViewClient WebChromeClient同一个WebView对象?

是否存在仅使用两者WebViewClient WebChromeClient同一WebView对象才能实现某个目标的情况的示例?

android webview webviewclient webchromeclient

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

webChromeClient在浏览器中打开链接

我搜索并阅读了很多帖子,但无法弄清楚如何在我的代码中执行此操作.

我想在我的应用程序中使用地理位置,需要在webChromeClient中查看而不是我现在用于html文件的webViewClient,并且链接确实保留在同一视图中.

当我将其更改为webChromeClient时,html链接<a href="http://url/file.php?q=123"会突然在浏览器中打开!

我怎么能阻止这个?

myWebView = new WebView(this);  
myWebView.getSettings().setJavaScriptEnabled(true);   
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setGeolocationEnabled(true);
myWebView.setWebChromeClient(new WebChromeClient() {
public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) { 
        callback.invoke(origin, true, false); }
});
myWebView.loadUrl("file:///android_asset/HTML/index.html");
setContentView(myWebView);
Run Code Online (Sandbox Code Playgroud)

android webchromeclient

20
推荐指数
3
解决办法
3万
查看次数

Android WebView播放HTML5/h.264/mp4视频,如何获取MediaPlayer

我有Activity一个WebView.我有一个WebChromeClient里面.在其中,有几个回调旨在返回MediaPlayer处理视频位.例如:

@Override
public void onPrepared(MediaPlayer mp) {
    Log.i(TAG, " -------------> onPrepared");
}
Run Code Online (Sandbox Code Playgroud)

当我将MP4流加载到WebView使用HTML <video>标记(通过注入)时,这些都无法触发.

当我finish()进行活动时,logcat会报告这个:

09-13 23:55:24.590: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:24.680: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:24.680: E/MediaPlayer(7949): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message.
09-13 23:55:25.675: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:26.735: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to …
Run Code Online (Sandbox Code Playgroud)

java android webview webchromeclient android-mediaplayer

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

WebView + WebChromeClient方法onCreateWindow没有调用target ="_ blank"

我试图建立一个custom browserWebView采用Android API level 10(SDK 2.3.3),不幸的是我不知道如何从拦截请求webpage以打开新的浏览器窗口的URL,像与链接水龙头target="_blank".

在与符合API Doc我已经覆盖了onCreateWindowWebChromeClient,但是当这样的链接被点击不叫.可能是这个API级别的错误?我还要shouldOverrideUrlLoading完全避免WebView在内置浏览器中打开后续链接.

这是我打开的示例代码google.com.要测试它,请点按"新闻",然后点按任何新闻标题.Android内置浏览器通常以新的方式打开它browser window.

package com.myexample;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class HelloAndroidActivity extends Activity {

  private static String TAG = "WebViewTest";
  private WebView mWebView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG, "onCreate");
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.mywebview); …
Run Code Online (Sandbox Code Playgroud)

android webview webchromeclient

11
推荐指数
3
解决办法
3万
查看次数

全屏时HTML 5视频崩溃

我目前正在开发一个带屏幕方向肖像的应用程序,我有需要全屏支持的html 5视频.我在webview中添加了一个WebChromeClient,它覆盖了一些方法.当我坚持纵向方向时,一切都工作得很好,但当我试图在全屏时将方向切换到风景时,我遇到了崩溃.任何线索?

覆盖方法:

public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (mCustomViewContainer != null) {
        callback.onCustomViewHidden();
        return;
    }
    if(interfazWeb==null)
        interfazWeb = (FragTabActivity) getActivity();
        if (view instanceof FrameLayout) {
            mCustomViewContainer = (FrameLayout) view;
            mCustomViewCallback = callback;
            interfazWeb.getCustomContentView().setVisibility(View.INVISIBLE);
            interfazWeb.addContentView(mCustomViewContainer, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER));
            interfazWeb.setBackDelegate(new BackDelegate(){

                public boolean shouldOverrideBackButton() {
                    if(mCustomViewCallback!=null){//first calling onHideCustomView()
                        onHideCustomView();
                        return true;
                    }
                    return false;
                }

            });
            mCustomViewContainer.bringToFront();
            //interfazWeb.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
    }

    @Override
    public void onHideCustomView() {
        // TODO Auto-generated method stub
            if(interfazWeb==null)
                interfazWeb = (FragTabActivity) getActivity();
            if(mCustomViewContainer!=null){ …
Run Code Online (Sandbox Code Playgroud)

android webview android-webview html5-video webchromeclient

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

Android webview,文件上传,在onActivityResult中设置结果时崩溃

在Android webview中,单击文件上载选项时,将调用onShowFileChooser,以调用用户从图像库中选择要上载的文件的意图.选择文件后,在onActivityResult内部由于以下原因而崩溃

java.lang.IllegalStateException: Duplicate showFileChooser result
        at org.chromium.android_webview.AwWebContentsDelegateAdapter$2.onReceiveValue(AwWebContentsDelegateAdapter.java:225)
        at org.chromium.android_webview.AwWebContentsDelegateAdapter$2.onReceiveValue(AwWebContentsDelegateAdapter.java:220)
        at com.android.webview.chromium.WebViewContentsClientAdapter$4.onReceiveValue(WebViewContentsClientAdapter.java:1063)
        at com.android.webview.chromium.WebViewContentsClientAdapter$4.onReceiveValue(WebViewContentsClientAdapter.java:1047)
Run Code Online (Sandbox Code Playgroud)

android webview webchromeclient

8
推荐指数
2
解决办法
3457
查看次数

Android视频WebView全屏无法正常工作-未调用onShowCustomView()

我正在尝试使用此项目中的示例在android的WebView中加载视频URL:https : //github.com/hanksudo/android-webview-youtube-fullscreen

事情是onShowCustomView永远不会调用该方法。每当我单击full screen视频按钮时,都会出现此错误:

I/chromium: [INFO:CONSOLE(0)] "Failed to execute 'requestFullscreen' on 'Element': API can only be initiated by a user gesture.", source: https://m.youtube.com/watch?v=dRekGX6dQRY (0)
Run Code Online (Sandbox Code Playgroud)

有人知道如何解决吗?为什么浏览器将其解释为JS请求,而不是使视频全屏显示的用户手势?我可以设置任何特殊标志来启用全屏显示吗?

谢谢!

android google-chrome fullscreen webview webchromeclient

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

I/铬?[INFO:CONSOLE(1)] “未捕获的 ReferenceError: callJS 未定义”

我在 Android Studio logcat 中收到以下错误:I/chromium? [INFO:CONSOLE(1)] “未捕获的 ReferenceError: callJS 未定义”

我已经研究过 stackoverflow,并在类似的帖子中尝试了建议的答案,但没有成功。这里

我正在尝试通过单击 android 按钮从加载到 WebChromeClient 的本地 html 文件中执行 javascript。代码取自 The Pragmatic Programmers “Hello Android Introducing Google's Mobile development Platform”第四版书中的第 10 章示例。

索引.html

<html>
<head>
    <script language="JavaScript">
        function callJS(arg){
            document.getElementById('replaceMe').innerHTML = arg;
        {
    </script>
</head>
<body>
    <h2>WebView</h2>
    <p>
        <a href="#" onClick="window.alert('Alert from Javascript')">Display JavaScript alert</a>
    </p>
    <p>
        <a href="#" onClick="window.android.callAndroid('Hello from Browser')">Call Android from JavaScript</a>
    </p>
    <p id="replaceMe"></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

主要活动

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log; …
Run Code Online (Sandbox Code Playgroud)

javascript android webchromeclient

7
推荐指数
0
解决办法
4526
查看次数

相对链接上的 Android WebView 新窗口空 URL

我实现了自定义WebViewsetSupportMultipleWindows()启用。因此,我也有一个WebChromeClient覆盖的自定义onCreateWindow()

对于大多数用途,我使用以下代码段在新窗口(即通过 打开target:_blank)中检索页面的 URL :

Message href = view.getHandler().obtainMessage();
view.requestFocusNodeHref(href);

String url = href.getData().getString("url");
Run Code Online (Sandbox Code Playgroud)

有空检查,但为了简单起见,我在上面的代码片段中删除了它们。现在的问题是,有时数据Bundle(通过 返回getData())具有相对链接的空 URL(即,href="/somepage"而不是href="https://www.example.com/somepage/")。

所以我搜索了 SO 并找到了另一个可能的解决方案:

WebView.HitTestResult result = view.getHitTestResult();
String url = result.getExtra();
Run Code Online (Sandbox Code Playgroud)

但是,这也会返回 null。如果我使用result.getType()它获取数据的类型,则返回 0,它映射到UNKNOWN_TYPE.`

我不确定为什么它为上述方法返回 null。注意,如果我禁用对多个窗口的支持,这些相同的链接就可以正常工作。但是,禁用此类支持不是一种选择。还有另一种方法可以从内部获取 URLonCreateWindow()吗?

android android-webview webchromeclient

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