Tag: webview

WebViewClient onReceivedError已弃用,新版本不检测所有错误

在Android SDK 23中, onReceivedError(WebView view, int errorCode, String description, String failingUrl)已被弃用,并被onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)所代替。 但是,如果我将手机置于飞行模式并在我的WebView上加载一个URL,则只会调用该方法的弃用版本。 onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse)也没有用,因为它只检测高于500的错误,而且我得到了109状态码。 有没有一种不被弃用的方式来检测我的WebView无法加载?

在WebViewClient中启用一般JavaScript

当在谷歌search一个答案,似乎我不是唯一卡住了似乎无法解决的问题。 我设法用自定义的WebViewClient创build一个WebView – 这使我有可能有一个processdialog,并显示一个错误消息,如果无法加载的URL。 但是这造成了JavaScript的问题。 我正在加载的URL有一些JavaScript,它改变了一些HTML元素的CSS样式(显示或隐藏元素)或redirect到另一个位置onclick – 或者甚至想要显示一个警告框。 但通过使用WebViewClient这些都没有工作。 这是我如何加载页面: public void loadUrl(String url) { final ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", getString(R.string.loading), true); final WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVerticalScrollBarEnabled(false); myWebView.setHorizontalScrollBarEnabled(false); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(myActivity.this, url, Toast.LENGTH_SHORT).show(); //Debugging purposes if (url.endsWith(".mp4")) { […]

Android WebView JellyBean – >不应该发生:找不到基于rect的testing节点

我的应用程序正在使用大量的Web浏览器,这些Web浏览器位于由ViewPager保存的片段中。 每当我滑过我的Galaxy Nexus上的应用程序与Jellybean上我一次又一次得到以下控制台消息: 08-23 13:44:03.374: E/webcoreglue(21690): Should not happen: no rect-based-test nodes found 任何人都可以向我解释什么是错的,以便我可以解决这个问题?

Chrome应用程序的webview和触摸滚动传播

我喜欢用Chrome打包的应用程序replaceWindows 8 Metro应用程序。 目前,它需要模仿Metro应用程序的外观和感觉。 主页面包含多个横向排列的网页浏览,可以进行大量的横向滚动。 尝试使用触摸设备水平滚动时遇到问题。 如果滚动手势在web视图上开始,它将捕获滚动事件并阻止主机滚动。 溢出隐藏在所有的网页浏览。 由于它们构成页面上的大部分内容,因此主机的有效滚动目标是有限的。 webview的内容是互动的,所以我不能放弃在可滚动的内容上放置一个透明的覆盖来捕捉事件,至less不是没有某种方式将点击/触摸传播到webviews本身。 任何想法如何实现? 谢谢你的帮助!

在WebView中点击表单字段不显示软键盘

我创build了自己的WebView并设置了WebChromeClient和WebViewClient对象。 当我启动这个WebView时,当我触摸它们(光标出现)时,HTML表单字段会作出反应,但是它们不会被选中,软键盘也不会启动。 如果我使用轨迹球来select窗体并按下它,键盘确实会出现。 我试图调用myWebview.requestFocusFromTouch()作为这个答案build议,但它返回false,并没有帮助。

Android活动作为对话框,但没有标题栏

我有一个以下设置为主题的活动: android:theme="@android:style/Theme.Dialog" 但是,在出现的活动对话框中有一个标题栏,它占用了我有的可用空间。 我怎样才能删除它?

Android WebView不加载HTTPS URL

public void onCreate(Bundle savedInstance) { super.onCreate(savedInstance); setContentView(R.layout.show_voucher); webView=(WebView)findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setBuiltInZoomControls(true); String url ="https://www.paymeon.com/Vouchers/?v=%C80%8D%B1x%D9%CFqh%FA%84%C35%0A%1F%CE&iv=%25%EE%BEi%F4%DAT%E1" //webView.loadUrl(url); // Not Working… Showing blank webView.loadUrl("http://www.yahoo.com"); // its working } 当我尝试在WebBView中加载一个URL时,它只显示一个空白的屏幕。 如果我加载Google.com或yahoo.com它工作正常。

在线时WebView加载网站,离线时加载本地文件

我实际上是在Java编程新手,但我一直在解决我的问题的几个解决scheme,但没有find一个适合我的情况下,我似乎无法得到正确的代码。 我想有一个WebView ,当手机在线时打开在线页面(例如Google),当手机处于离线状态时打开本地HTML页面。 同时,尽pipe我希望手机在联机时覆盖本地页面,以便离线本地页面始终更新到最后一次手机连接到互联网。 任何想法如何做到这一点? 一些简单的指向正确的方向可能会有所帮助。 非常感谢。

如何使用WebView自定义字体

现在我想显示一些unicode字符,并使用了<font face=" Arial">something here</font>标签。 但似乎WebView无法findArial字体,因为我只能看到不明飞行物字符。 我必须将arial.ttf复制到某个地方,或者如何在WebView使用这种TrueType字体? 谢谢。

检查Android WebView是否正在消耗触摸事件

简洁版本 如何检测Android WebView是否消耗触摸事件? onTouchEvent总是返回true,并且从不触发WebViewClient的onUnhandledInputEvent 。 详细版本 我有一个TwoDScrollView内的多个WebViews。 顾名思义,TwoDScrollView既可以垂直滚动也可以水平滚动。 TwoDScrollView的内容可以放大/缩小。 当用户拖动他的手指或使用捏缩放,我想分配触摸事件: WebView如果其内容是可滚动/可缩放的(即只有WebView的内部将滚动/缩放) TwoDScrollView如果上述条件为false(TwoDScrollView的所有内容将滚动/缩放) 我已经通过使用canScrollHorizontally和canScrollVertically方法部分实现了这一点。 但是这些方法只适用于“本地滚动”。 但是,在某些情况下,WebView中的一些JavaScript会消耗触摸事件,例如Google地图。 在这种情况下,这些方法返回false。 有什么方法可以查明WebView的内容是否消耗触摸事件,即可滚动/可缩放吗? 我无法更改WebView的内容,因此我的问题与此不同。 我已经考虑通过evaluateJavaScript方法在Webview中执行一些JavaScript来检查触摸处理程序,但根据这个答案 ,没有简单的方法来实现这一点,也可以有一些其他嵌套的iframe。 任何帮助将不胜感激。 我已经试过了 我onTouchEvent了WebView的onTouchEvent并且读取了总是返回true的super.onTouchEvent() ,不pipe怎样。 如上所述, canScrollHorizontally和canScrollVertically只能部分地解决这个问题 onScrollChanged也没有用 WebViewClient.onUnhandledInputEvent从不被触发 我考虑通过evaluateJavaScript使用JavaScript,但这是一个非常复杂和难看的解决scheme 我试图通过Debug.startMethodTracing来跟踪Debug.startMethodTracing 。 我发现它传播如下: android.webkit.WebView.onTouchEvent com.android.webview.chromium.WebViewChromium.onTouchEvent com.android.org.chromium.android_webview.AwContents.onTouchEvent com.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onTouchEvent com.android.org.chromium.content.browser.ContentViewCore.onTouchEventImpl 根据ContentViewCore的源代码 ,触摸事件以nativeOnTouchEvent本地方法nativeOnTouchEvent ,我不知道会发生什么。 无论如何, onTouchEvent总是返回true,即使有可能find事件是否被消耗,也需要使用私有方法,这也是相当丑陋的。 注意 我不需要知道如何拦截发送给WebView的触摸事件,但WebView是否正在使用它们,即正在使用它们做任何事情,例如滚动,拖动等。