我有一些HTML文本输入到WebView,我需要禁用Android上这些输入的自动建议,而不是HTML(autocomplete = off).
我怎样才能做到这一点?
我在5.1.1版的Samsung SM G920F(Galaxy S6)中找到了有关Crashlytics的崩溃报告(在所有其他设备上,我没有检索到相同的错误)。
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackage/com.mypackage.myactivity}:
android.view.InflateException: Binary XML file line #21: Error inflating class android.webkit.WebView
Run Code Online (Sandbox Code Playgroud)
这是我的webview的布局(样式为空样式):
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_webview_id"
style="@style/MyEmptyStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent" />
Run Code Online (Sandbox Code Playgroud)
这就是我将其包括在活动布局中的方式:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/my_webview_layout"
android:visibility="gone"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
报告的错误是XML错误,因此我提供了所有代码(简化了)。这是一份报告,因此仅在此设备上发生过一次,有人可以向我解释原因吗?
编辑(完整的堆栈跟踪)
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackage/com.mypackage.myactivity}: android.view.InflateException: Binary XML file line #21: Error inflating class android.webkit.WebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
at android.app.ActivityThread.access$1000(ActivityThread.java:198)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6837)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) …Run Code Online (Sandbox Code Playgroud) 我在 Android 5.0 (API 21) 上进行了以下错误测试。在其他操作系统版本上测试运行良好。
java.lang.RuntimeException:无法启动活动 ComponentInfo{...ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}:android.view.InflateException:二进制 XML 文件第 24 行:错误膨胀类 android.webkit.WebView
找不到关于 xml 布局的任何特别之处,在第 24 行:
<WebView
android:id="@+id/nav_fg_legal_detail_web"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Run Code Online (Sandbox Code Playgroud)
编码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setTheme(R.style.AppTheme_NoActionBar)
setContentView(R.layout.legal_detail_activity) // crash here. Nothing done to web view yet.
Run Code Online (Sandbox Code Playgroud)
我正在使用库“androidx.appcompat:appcompat:1.1.0”。
更新:完整堆栈:
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.byte_artisan.mchat2, PID: 4198
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.byte_artisan.mchat2/com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class android.webkit.WebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) …Run Code Online (Sandbox Code Playgroud) 我正在将Android应用程序从API 27更新到API 29,并且注意到在尝试在基于5.0和/或5.1的模拟器上呈现WebView时出现崩溃。在运行6.0或更高版本的模拟器(API 23-29)上不会发生此问题。
我似乎找不到任何有关WebView行为的文档,这些文档会影响5.0或5.1,但我可以确认使用API 27运行该应用程序时不会发生此问题。我不知所措,因为我不知道这是否是模拟器问题或实际的API /设备问题(我在想后者)。
问题是活动和片段根本不会膨胀,因为缺少String资源。这是一些堆栈跟踪(它似乎找不到String资源):
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.MyActivity}: android.view.InflateException: Binary XML file line #15: Error inflating class com.example.MyWebView
Caused by: android.view.InflateException: Binary XML file line #15: Error inflating class com.example.MyWebView...
Caused by: java.lang.reflect.InvocationTargetException...
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040002
Run Code Online (Sandbox Code Playgroud)
在崩溃发生之前,与资源相关的日志中有一些相关的警告:
W/chromium: [WARNING:resource_bundle.cc(315)] locale_file_path.empty()
E/eglCodecCommon: glUtilsParamSize: unknow param 0x000082da
E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008cdf
E/eglCodecCommon: glUtilsParamSize: unknow param 0x00008824
W/chromium: [WARNING:proxy_service.cc(901)] PAC support disabled because there is no system implementation
W/chromium: [WARNING:data_reduction_proxy_settings.cc(403)] SPDY proxy …Run Code Online (Sandbox Code Playgroud) 我们是从Android 5.0.2的Galaxy S6上的测试人员获得此崩溃的。Android系统WebView 37(1726107-arm64)Google Play服务19.0.56(020400-263933554)Google Play商店16.5.30-全部[0] [PR] 267441717
如何重现(除上述设备外):Android Studio,仿真器为x86_64 API 21和22构建的AndroidSDK。22以上没有崩溃。在相同的设备上,WebView崩溃并显示类似的消息。它不会因Android Developers 示例中的测试发布者ID(“ pub-0123456789012345”)而崩溃
Fatal Exception: android.content.res.Resources$NotFoundException: String resource ID #0x3040002
at android.content.res.Resources.getText + 1347(Resources.java:1347)
at android.content.res.Resources.getString + 1441(Resources.java:1441)
at com.android.org.chromium.content.browser.ContentViewCore.setContainerView + 702(ContentViewCore.java:702)
at com.android.org.chromium.content.browser.ContentViewCore.initialize + 608(ContentViewCore.java:608)
at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore + 619(AwContents.java:619)
at com.android.org.chromium.android_webview.AwContents.setNewAwContents + 758(AwContents.java:758)
at com.android.org.chromium.android_webview.AwContents.<init> + 608(AwContents.java:608)
at com.android.org.chromium.android_webview.AwContents.<init> + 546(AwContents.java:546)
at com.android.webview.chromium.WebViewChromium.initForReal + 312(WebViewChromium.java:312)
at com.android.webview.chromium.WebViewChromium.access$100 + 97(WebViewChromium.java:97)
at com.android.webview.chromium.WebViewChromium$1.run + 264(WebViewChromium.java:264)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue + 124(WebViewChromium.java:124)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run + 111(WebViewChromium.java:111)
at com.android.org.chromium.base.ThreadUtils.runOnUiThread + 144(ThreadUtils.java:144)
at …Run Code Online (Sandbox Code Playgroud) 我尝试将WebView添加到我的活动中:
WebView webView = new WebView(this);
Run Code Online (Sandbox Code Playgroud)
在所有设备上都可以正常工作,但是在Android Lollipop 5.1(仅)设备上,我在这一行遇到了异常:
10-18 12:04:29.741 13131-13131/xx.xxxxxx E/AndroidRuntime: FATAL EXCEPTION: main
Process: xx.xxxxxx, PID: 13131
java.lang.RuntimeException: Unable to start activity ComponentInfo{xx.xxxxxx/xx.xxxxxx.activity.login.UseActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
at android.content.res.Resources.getText(Resources.java:299)
at android.content.res.Resources.getString(Resources.java:385)
at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)
at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)
at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)
at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:311)
at …Run Code Online (Sandbox Code Playgroud) 我们的应用程序依赖于让我们从和AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)中选取浅色和深色主题颜色values/colorsvalues-night/colors
但是每次我们尝试使用 时WebView,它都会从重置 UiMode 开始,并且我们的应用程序会混淆为我们的主题选择哪些颜色值
有人遇到类似的问题吗?
第一次在 webview 中成功登录我的网站,但是当焦点输入用户名时第二次登录崩溃应用程序,崩溃时出现错误:
W/ResourceType: Invalid package identifier when getting bag for resource number 0x02080003
Invalid package identifier when getting bag for resource number 0x02080003
W/System.err: java.lang.NullPointerException: Atteenter code herempt to invoke virtual method 'boolean android.graphics.drawable.Drawable.getPadding(android.graphics.Rect)' on a null object reference
at org.chromium.ui.DropdownPopupWindow.<init>(DropdownPopupWindow.java:80)
at org.chromium.ui.autofill.AutofillPopup.<init>(AutofillPopup.java:48)
at org.chromium.android_webview.AwAutofillClient.showAutofillPopup(AwAutofillClient.java:50)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:37)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
A/chromium: [FATAL:jni_android.cc(249)] Check failed: false. Please include Java exception stack in crash report
W/google-breakpad: …Run Code Online (Sandbox Code Playgroud) 我正在尝试升级我的 gradle。当我将 appcompat 从 1.0.2 更新到 1.1.0 时,我的 webview 在某些手机上不再工作。(API 21 和 22)。
有没有一种聪明的方法可以升级到 1.1.0 并仍然使 webview 工作。
我得到一个“android.view.InflateException: Binary XML file line #1: Error inflating class”。我试图找到一种方法来更新我的模拟器上的 webview。但我真的希望有一个代码可以解决问题,对于不更新 webview 的用户。
我的xml:
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Run Code Online (Sandbox Code Playgroud)
我的活动:
private WebView mWebView;
private String state;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_webview_activity);
mWebView = findViewById(R.id.webview);
mWebView.setWebViewClient(new MyBrowser());
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
CookieManager.getInstance().setAcceptCookie(true);
CookieManager.getInstance().setAcceptThirdPartyCookies(mWebView, true);
mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
Run Code Online (Sandbox Code Playgroud)
我的错误:
WebViewActivity: android.view.InflateException: Binary XML file line #1: Error inflating …Run Code Online (Sandbox Code Playgroud)