Articles of webview

如何在WebView上正确实现NestedScrollingChild

随支持库提供的NestedScrollView无法与WebView (相关的错误报告 )一起正常工作。 因此,我已经开始为WebView实现NestedScrollingChild ,它似乎可以正常工作,第一次滚动,折叠和扩展AppBarLayout但任何后续滚动都无法折叠它。 我的WebView : import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.support.v4.view.NestedScrollingChild; import android.support.v4.view.NestedScrollingChildHelper; import android.util.AttributeSet; import android.view.View; import android.webkit.WebView; /** * Created by carlos on 2/19/16. */ public class MyWebView extends WebView implements NestedScrollingChild { private static final String TAG = MyWebView.class.getSimpleName(); private NestedScrollingChildHelper helper = new NestedScrollingChildHelper(this); public MyWebView(Context context) […]

android:minHeight无法在webview中工作

我有以下xml文件。 我正在加载示例HTML文件,页面高度为150px。 加载页面后,webview的背景仅填充150px的红色。 但我将android:minHeight属性设置为290px。

WebView崩溃加载Android 7.0的video

我几天来一直在研究这个问题,但却无法解决这个问题。 我在使用WebViews时遇到的问题是,当我加载vimeovideo时,它会因以下错误而失败: java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.graphics.Bitmap.getWidth()’ on a null object reference at com.android.webview.chromium.WebViewContentsClientAdapter.getDefaultVideoPoster(WebViewContentsClientAdapter.java:1181) at org.chromium.android_webview.DefaultVideoPosterRequestHandler$1.run(DefaultVideoPosterRequestHandler.java:39) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 现在奇怪的是,这种情况发生在Anroid 7.0上并没有比Android 4.4更低(没有用于5.0或6.0的物理设备进行测试)。 这是我正在运行以呈现片段的代码: public class FragmentWebView extends Fragment{ protected WebView myWebView; private String title, url, message; private boolean isOffline; View […]

强制关闭屏幕WebView进行绘制

我有一个WebViews滑块,每个WebView都完全符合屏幕尺寸。 用户可以从左向右滚动,反之亦然。 当WebView从未显示在可见区域中时出现问题。 它的内容是预先加载的,但整个表面都是空白几毫秒,直到Android知道它变得可见并显示其内容。 因为一张图片胜过千言万语: 每次添加视图时我都会执行“requestLayout”。 我试图使它们无效甚至做一个假卷轴……但没有成功。 目标API级别为17。

Android崩溃报告 – 由webview引起的/system/lib/libc.so中的本机崩溃

使用Android 5.0的Galaxy Note4的用户昨天我的应用程序崩溃了。 这是堆栈跟踪。 我的应用程序主要只是一个网站的webview包装器。 有什么我可以做的来改进webview或使其更有效地防止20个左右的崩溃我得到一周所有具有相同的堆栈跟踪? *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: ‘samsung/trlteuc/trlteatt:5.0.1/LRX22C/N910AUCU2COC6:user/release-keys’ Revision: ’12’ ABI: ‘arm’ pid: 421, tid: 421, name: ****.app >>> org.***********.app <<< signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr ——– Abort message: '[FATAL:jni_android.cc(249)] Check failed: false. Please include […]

LeakCanary发现Android WebView内存泄漏

我一直在使用工具泄漏程序来发现我的应用程序中的内存泄漏。 似乎我的WebViewActivity每次都泄漏。 我创建了一个简单的应用程序来测试泄漏。 我在xml布局文件中使用WebView启动一个Activity,并使用活动上下文进行膨胀。 Js off。 默认情况下,所有内容都需要一个简单的webViewClient来保持WebView中的重定向。 它每次泄漏。 我已经做了大量的研究,防止这种情况的唯一方法是使用另一个进程启动WebViewActivity并在onDestroy中杀死它。 但这种方法有其自身的缺点。 每次运行5.0+的设备都会发生泄漏,未检查4.3及以下版本。 泄漏信息粘贴在下面: 在com.example.webviewmemoryleaktest:1.0:1。 * com.example.webviewmemoryleaktest.WebViewActivity已泄露:* GC ROOT android.os.ResultReceiver $ MyResultReceiver.this $ 0 *引用org.chromium.content.browser.ContentViewCore $ 2 $ 1.this $ 1(匿名类扩展android.os.ResultReceiver) *引用org.chromium.content.browser.ContentViewCore $ 2.this $ 0 *引用org.chromium.content.browser.ContentViewCore.mContext *引用com.android.webview.chromium.ResourcesContextWrapperFactory $ WebViewContextWrapper.mBase * leaks com.example.webviewmemoryleaktest .WebViewActivity实例 参考密钥:9a0346cf-6ad9-4b07-9329-a975d8fa3cbe 设备:LGE google Nexus 4 occam Android版本:5.1 API:22 持续时间:watch = 5139ms,gc = 188ms,堆转储= […]

如何解决“glUtilsParamSize”问题

我的Android应用程序中有WebView 。 在我启动模拟器后,我看到许多红线重复下面的行: 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000bd0 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ **** ERROR unknown type 0x0 (glSizeof,72) 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000b44 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000bd0 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ **** ERROR unknown type 0x0 (glSizeof,72) 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000b44 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ glUtilsParamSize: unknow param 0x00000bd0 1656-1656/com.exercise.AndroidHTML E/eglCodecCommon﹕ **** ERROR unknown type […]

处理WebView文件下载和运行时权限

当我单击WebView某个按钮时,它应该下载一个PDF文件,该文件将保存到外部存储器中。 为此,我正在设置一个DownloadListener : webview.setDownloadListener(new DownloadHandler()); public class DownloadHandler implements DownloadListener { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { DownloadManager.Request request = new DownloadManager.Request( Uri.parse(url)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, getFileName(url)); DownloadManager dm = (DownloadManager)getContext().getSystemService(getContext().DOWNLOAD_SERVICE); dm.enqueue(request); } } 尝试在Android M上执行此操作时会出现问题,在运行时会询问所有权限。 在启动下载之前,我应该如何首先请求权限,并根据是否授予下载继续或不继续下载? 下载URL调用shouldInterceptRequest not shouldOverrideUrlLoading ,所以我甚至不确定如何取消首先检查权限的请求。 WebView启动后请求权限不是一个选项,因为您可以做的不仅仅是下载文件。

Admob在DeviceMotionService中使用NullPointerException崩溃我们的应用程序

我们的应用在DeviceMotionService中获得了很多NullPointerException。 我们的应用程序中没有WebView,似乎与Admob SDK有关。 如何解决问题以防止崩溃? java.lang.NullPointerException at android.webkit.DeviceMotionService$2.run(DeviceMotionService.java:103) at android.os.Handler.handleCallback(Handler.java:605) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:734) at java.lang.Thread.run(Thread.java:856) 以下是Google网上论坛关于崩溃的讨论

如何在模拟器中升级Android的Webview(Android 5)

在模拟器中运行的Android 5.0.0似乎不会进行Web View更新。 也就是说,Android系统Webview从Play商店( 链接 )安装得很好。 但是,浏览器继续使用较旧的WebView(根据用户代理字符串)。 为什么不在模拟器中进行 webview升级?如何才能完成? PS升级显示与库存WebView一起安装(均显示在应用程序列表中)。 尝试通过Play商店安装并手动无效。 PPS这样做的目的是测试我的代码如何处理特定版本的webview中的特定错误。