Failed to load WebView provider: No WebView installed

2023-05-16

系统中已经集成了Chrome及WebviewGoogle,但是在打开个别使用到WebView的应用的时候,还是会出现应用FC,如:

Setting->System->About phone->Legal information,点击Thirdpart licenses等会出现FC。

且在开发者选项中WebView implementation那一条上会显示none,正常来说是显示Chrome。

直接上log:

01-02 03:05:31.501 25622 25622 E WebViewFactory: Chromium WebView package does not exist
01-02 03:05:31.501 25622 25622 E WebViewFactory: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:319)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:383)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.getFactory(WebView.java:2530)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.ensureProviderCreated(WebView.java:2525)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.setOverScrollMode(WebView.java:2590)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.View.<init>(View.java:4574)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.View.<init>(View.java:4706)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.ViewGroup.<init>(ViewGroup.java:597)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:55)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.<init>(WebView.java:643)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.<init>(WebView.java:588)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.<init>(WebView.java:571)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.webkit.WebView.<init>(WebView.java:558)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at java.lang.reflect.Constructor.newInstance0(Native Method)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.createView(LayoutInflater.java:647)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:419)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.Activity.setContentView(Activity.java:2715)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at com.android.htmlviewer.HTMLViewerActivity.onCreate(HTMLViewerActivity.java:58)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.Activity.performCreate(Activity.java:7091)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.Activity.performCreate(Activity.java:7082)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2734)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.ActivityThread.-wrap11(Unknown Source:0)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.os.Handler.dispatchMessage(Handler.java:106)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.os.Looper.loop(Looper.java:164)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at android.app.ActivityThread.main(ActivityThread.java:6518)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at java.lang.reflect.Method.invoke(Native Method)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
01-02 03:05:31.501 25622 25622 E WebViewFactory: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
01-02 03:05:31.503 25622 25622 D AndroidRuntime: Shutting down VM
--------- beginning of crash
01-02 03:05:31.504 25622 25622 E AndroidRuntime: FATAL EXCEPTION: main
01-02 03:05:31.504 25622 25622 E AndroidRuntime: Process: com.android.htmlviewer, PID: 25622
01-02 03:05:31.504 25622 25622 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.htmlviewer/com.android.htmlviewer.HTMLViewerActivity}: android.view.InflateException: Binary XML file line #22: Binary XML file line #22: Error inflating class android.webkit.WebView
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.-wrap11(Unknown Source:0)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6518)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #22: Binary XML file line #22: Error inflating class android.webkit.WebView
01-02 03:05:31.504 25622 25622 E AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class android.webkit.WebView
01-02 03:05:31.504 25622 25622 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance0(Native Method)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.createView(LayoutInflater.java:647)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.onCreateView(LayoutInflater.java:720)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:788)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:419)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.Activity.setContentView(Activity.java:2715)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.htmlviewer.HTMLViewerActivity.onCreate(HTMLViewerActivity.java:58)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7091)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.Activity.performCreate(Activity.java:7082)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2734)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.-wrap11(Unknown Source:0)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:106)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:164)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.app.ActivityThread.main(ActivityThread.java:6518)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at java.lang.reflect.Method.invoke(Native Method)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: Caused by: android.util.AndroidRuntimeException: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:423)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:194)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.getFactory(WebView.java:2530)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.ensureProviderCreated(WebView.java:2525)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.setOverScrollMode(WebView.java:2590)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.View.<init>(View.java:4574)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.View.<init>(View.java:4706)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.view.ViewGroup.<init>(ViewGroup.java:597)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.widget.AbsoluteLayout.<init>(AbsoluteLayout.java:55)
01-02 03:05:31.504 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.<init>(WebView.java:643)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.<init>(WebView.java:588)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.<init>(WebView.java:571)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	at android.webkit.WebView.<init>(WebView.java:558)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	... 28 more
01-02 03:05:31.505 25622 25622 E AndroidRuntime: Caused by: android.webkit.WebViewFactory$MissingWebViewPackageException: Failed to load WebView provider: No WebView installed
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	at android.webkit.WebViewFactory.getWebViewContextAndSetProvider(WebViewFactory.java:319)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	at android.webkit.WebViewFactory.getProviderClass(WebViewFactory.java:383)
01-02 03:05:31.505 25622 25622 E AndroidRuntime: 	... 40 more
01-02 03:05:31.509 17549 17633 W ActivityManager:   Force finishing activity com.android.htmlviewer/.HTMLViewerActivity

因为现在都是使用的Chrome中自带的Webview,一般来说集成了Chrome的话是不会出现这种No WebView installed问题,且系统还集成了WebviewGoogle。

我们知道,系统是通过获取config_webview_packages.xml文件中定义的WebView:在SystemImpl.java的构造函数中:

private SystemImpl() {
        int numFallbackPackages = 0;
        int numAvailableByDefaultPackages = 0;
        int numAvByDefaultAndNotFallback = 0;
        XmlResourceParser parser = null;
        List<WebViewProviderInfo> webViewProviders = new ArrayList<WebViewProviderInfo>();
        try {
            parser = AppGlobals.getInitialApplication().getResources().getXml(
                    com.android.internal.R.xml.config_webview_packages);//解析这个文件
            XmlUtils.beginDocument(parser, TAG_START);
            while(true) {
                XmlUtils.nextElement(parser);
                String element = parser.getName();
                if (element == null) {
                    break;
                }
                if (element.equals(TAG_WEBVIEW_PROVIDER)) {
                    String packageName = parser.getAttributeValue(null, TAG_PACKAGE_NAME);
                    if (packageName == null) {
                        throw new AndroidRuntimeException(
                                "WebView provider in framework resources missing package name");
                    }
                    String description = parser.getAttributeValue(null, TAG_DESCRIPTION);
                    if (description == null) {
                        throw new AndroidRuntimeException(
                                "WebView provider in framework resources missing description");
                    }
                    boolean availableByDefault = "true".equals(
                            parser.getAttributeValue(null, TAG_AVAILABILITY));//availableByDefault要为true
                    boolean isFallback = "true".equals(
                            parser.getAttributeValue(null, TAG_FALLBACK));//isFallback 要为true
                    WebViewProviderInfo currentProvider = new WebViewProviderInfo(
                            packageName, description, availableByDefault, isFallback,
                            readSignatures(parser));
                    if (currentProvider.isFallback) {
                        numFallbackPackages++;
                        if (!currentProvider.availableByDefault) {
                            throw new AndroidRuntimeException(
                                    "Each WebView fallback package must be available by default.");
                        }
                        if (numFallbackPackages > 1) {
                            throw new AndroidRuntimeException(
                                    "There can be at most one WebView fallback package.");
                        }
                    }
                    if (currentProvider.availableByDefault) {
                        numAvailableByDefaultPackages++;
                        if (!currentProvider.isFallback) {
                            numAvByDefaultAndNotFallback++;
                        }
                    }
                    webViewProviders.add(currentProvider);
                }
                else {
                    Log.e(TAG, "Found an element that is not a WebView provider");
                }
            }
        } catch (XmlPullParserException | IOException e) {
            throw new AndroidRuntimeException("Error when parsing WebView config " + e);
        } finally {
            if (parser != null) parser.close();
        }
        if (numAvailableByDefaultPackages == 0) {
            throw new AndroidRuntimeException("There must be at least one WebView package "
                    + "that is available by default");
        }
        if (numAvByDefaultAndNotFallback == 0) {
            throw new AndroidRuntimeException("There must be at least one WebView package "
                    + "that is available by default and not a fallback");
        }
        mWebViewProviderPackages =
                webViewProviders.toArray(new WebViewProviderInfo[webViewProviders.size()]);
    }

然后查看frameworks/base/core/res/res/xml/config_webview_packages.xml文件中对使用的webview进行声明,仅仅只有:

<webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true">

然后把设备中的frameworks-res.apk拉取出来,反编译资源文件后查看config_webview_packages.xml中的配置,跟frameworks/base/core/res/res/xml/config_webview_packages.xml文件是一致的,所以确定了就是由于config_webview_packages.xml没有配置好导致。

接着查看集成GMS包的地方是否有进行overlay,一般集成GMS包的路径为:vendor/partner_gms,overlay一般是放在这个路径的/products/gms_overlay等路径下(Google释放出来的GMS包中各个路径就是这样的),查看这个路径下的overlay,发现是没有对config_webview_packages.xml进行覆盖的。

那这样的话系统就是使用的frameworks/base/core/res/res/xml/config_webview_packages.xml文件中申明的webview,但是查看

SystemImpl中对config_webview_packages.xml的解析,frameworks/base/core/res/res/xml/config_webview_packages.xml是没有满足条件的webview的(需要availableByDefault="true" isFallback="true")。所以系统会报出Chromium WebView package does not exist。

故需要把Chrome及WebviewGoogle添加进去:

<webviewproviders>
    <!-- The default WebView implementation -->
    <!--[BUGFIX]-Mod-BEGIN by mengqin.zhang,09/29/2018,task 7040859-->
    <!--<webviewprovider description="Android WebView" packageName="com.android.webview" availableByDefault="true">
    </webviewprovider>-->
    <webviewprovider description="Chrome Stable" packageName="com.android.chrome" availableByDefault="true">
        <!-- Ignore this package on user/release builds unless preinstalled. -->
    </webviewprovider>
    <webviewprovider description="Google WebView" packageName="com.google.android.webview" availableByDefault="true" isFallback="true">
        <!-- Ignore this package on user/release builds unless preinstalled. -->
    </webviewprovider>
    <!--[BUGFIX]-Mod-END by mengqin.zhang,09/29/2018,task 7040859-->
</webviewproviders>

这样就OK啦~

其实出现这个问题的根本原因是集成GMS包的同事没有把GMS包中product目录下的overlay集成完整,一般来说,GMS包中提供的overlay(vendor/partner_gms/products/webview_overlay/frameworks/base/core/res/res/xml/config_webview_packages.xml)会覆盖frameworks/base/core/res/res/xml/config_webview_packages.xml文件,GMS包中提供的config_webview_packages.xml内容为:

<?xml version="1.0" encoding="utf-8"?>
<!-- WebView providers in order of preference -->
<!-- Signature checks are ignored if the package is preinstalled or if this is a userdebug or eng
    build. If no signature is provided, the package can provide a WebView implementation only on userdebug/eng builds or if it's preinstalled -->
<webviewproviders>
    <webviewprovider description="Chrome Stable" packageName="com.android.chrome" availableByDefault="true">
        <!-- Ignore this package on user/release builds unless preinstalled. -->
    </webviewprovider>
    <webviewprovider description="Google WebView" packageName="com.google.android.webview" availableByDefault="true" isFallback="true">
        <!-- Ignore this package on user/release builds unless preinstalled. -->
    </webviewprovider>
    <webviewprovider description="Chrome Beta" packageName="com.chrome.beta">
        <signature>xxxxx签名是有的,省略啦~~~~~~</signature>
    </webviewprovider>
    <webviewprovider description="Chrome Dev" packageName="com.chrome.dev">
        <signature>xxxxxxx签名是有的,省略啦~~~~~~</signature>
    </webviewprovider>
    <webviewprovider description="Chrome Canary" packageName="com.chrome.canary">
        <signature>xxxxxxxx签名是有的,省略啦~~~~~~</signature>
    </webviewprovider>
    <webviewprovider description="Chrome Debug" packageName="com.google.android.apps.chrome">
        <!-- Ignore this package on user/release builds unless preinstalled. -->
    </webviewprovider>
</webviewproviders>

另,如果在GMS包overlay中没有提供这个config_webview_packages.xml,且frameworks/base/core/res/res/xml/config_webview_packages.xml也只有默认的Android WebView,没有声明以上六个Chrome及WebView,还会导致CTS/GTS跑不过~

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Failed to load WebView provider: No WebView installed 的相关文章

  • 为什么 PayPal 无法在 WinRT WebView 控件内工作

    我正在编写一个 Windows 8 应用程序 用户可以在其中进行应用内购买 我们的客户为我们提供了 REST API 基本上 我从这个 REST API 获取产品信息 如果用户选择购买产品 我会告诉 REST API 开始交易 因此 我收到
  • Android webview 不加载页面,但应用程序从浏览器加载

    我有一个 html 5 移动网络应用程序 可以从浏览器加载 但卡在 android webview 上 我们在加载网络应用程序之前使用了启动屏幕 但我的网络视图卡在启动屏幕中 不加载主页 我们正在使用武尔夫 API http wurfl s
  • WebView - 在每个请求上定义用户代理

    目前 我将请求消息的 User Agent 设置如下 var rm new HttpRequestMessage HttpMethod Post new Uri http example com rm Headers Add User Ag
  • 如何定期更新WebView中的HTML5位置(使用FINE_ACCURACY)

    我正在开发一个应用程序来跟踪我的手机定期 不仅是第一次 with navigator geolocation getCurrentPosition 运行在 HTML5 页面中 运行在 webkit webview 中 运行在 android
  • 从 webview 获取用户触摸的元素

    大家好 我正在尝试获取用户在 web 视图中触摸的 html 元素 例如 该场景是用户触摸 Web 视图中的某种按钮 应用程序显示该按钮的 html 代码 如下所示 a href index html a 我已经能够获取用户正在浏览的 ht
  • Android 上带有 asynctask 的 Webview

    我想做的是进度对话框等待加载项目webview 我该怎么做dialog dismiss 事件取决于加载项目webview public class asynctask extends AsyncTask
  • Chrome 应用程序 localStorage 不持久并且 chrome.storage 不工作

    我有一个 chrome Kiosk 应用程序 我需要在机器打开和关闭之间保存数据 几个字节作为字符串 但无论我尝试什么 本地存储似乎在重新启动时都会被擦除 当我转到 chrome inspect apps 检查 Chrome 应用程序时 控
  • Android WebViewClient url重定向(Android URL加载系统)

    我尝试使用以下方法拦截 webview 请求 ShouldInterceptRequest 里面我用了HttpUrlConnection为了从服务器获取数据 我将其设置为遵循重定向 这对 webviewclient 是透明的 这意味着当我返
  • Android Web 视图中隐藏在键盘下方的文本框

    我创建了一个简单的 iPhone Android 应用程序 包含一个普通的 Web 视图 这个网络视图调用我的网站 在我的网站上有几种输入类型 文本或文本区域的表单 当它们位于页面底部时 我遇到了问题 1 在我的iPhone应用程序中 键盘
  • Android:在以下情况下如何在html中引用css文件

    hi在我的应用程序中 我需要在 webview 中显示一个 html 页面 并且该 html 页面应该引用 css 文件的 sdcard 位置 使用 link href 标签 我在 sdcard gt mibook 中放置了 2 个文件 即
  • 在PC上的Firefox上模拟Android的Webview?

    作为我的软件开发工作 针对 Android 的一部分 我需要在通过 Android 的 WebView 查看时检查大量 HTML 页面的内容 到目前为止 我已经能够通过将 HTML 内容转储到文件中来实现这一点 data data
  • 像 Gmail 应用程序一样处理 Android WebView 中的外部链接

    我是一名网络开发人员 我目前正在 Android Studio 上使用 WebView 开发 Android 应用程序 该 WebView 将我的网站作为 Android 应用程序访问 我的一个网页包含许多外部链接 我的目标是让 Andro
  • WebView2 在没有 WebView2 运行时的情况下工作

    我们尝试在没有 WebView2 运行时的情况下使用 WebView2 因为它的大小为 100 MB 并将其分发给客户端 它在 2 台 PC 上进行了测试 两者都有相同版本的 Edge 在 PC1 上 如果没有 WV2 运行时 WebVie
  • WebView 不运行 loadHTMLString 中给出的 JavaScript

    我不明白为什么这不起作用 我的桌面上有一个 test htm 文件 如下所示 This is x 2 我有一个 WebVie
  • TabHost 中的 Webview = 以黑屏启动

    我正在尝试在有 4 个选项卡的 tabhost 中使用 webview 所有选项卡都链接到同一个 webview 这很好 除了一个问题 启动时 网络视图是黑色的 单击选项卡 2 3 或 4 使其 活跃起来 我的快速解决方法是使用 setCu
  • 生产中偶尔会发生 android.webkit.WebView 类膨胀错误

    我的应用程序在 Google Play 上 它在大多数设备 数千个用户 上运行良好 但在极少数情况下 占每日活跃用户百分比的一小部分 我得到Error inflating class android webkit WebView当我为我的片
  • 无法从 com.android.aaptcompiler.ParsedResource@ef79973 提取资源

    无法从 com android aaptcompiler ParsedResource ef79973 提取资源 无法从 com android aaptcompiler ParsedResource 4c95ce87 提取资源 C Use
  • LC3 LEA指令和存储的值

    我对这个问题感到困惑 指令后寄存器0中存储的值是多少 LEA R0 A 被处决了吗 为什么答案是x370C 我认为应该将A的地址加载到R0中 如果是这样我们怎么知道地址 有人可以帮忙吗 非常感谢 ORIG X3700 LEA R0 A LD
  • Jquery 在 DIV 中进行多重加载

    这是我的代码 right load textes html nicolas right load textes html antoine 问题是内容divantoine覆盖了右边div nicolas加载的内容div div right l
  • Android 动画 GIF

    我正在尝试使用 WebView 显示动画 GIF 它在大多数设备上运行良好 但仍有一些设备不支持动画并显示静态 GIF 如何检测设备是否支持 WebView 中的动画 GIF 以便在不支持时显示适当的消息 是的 这似乎是一个常见问题 htt

随机推荐

  • TIME_WAIT过多解决办法

    还是一次性能测试过程中 xff0c TPS曲线先升后降 xff0c 响应时间增加 xff0c 请求没有大量报错 xff0c 程序无报错 xff0c 服务器监控发现cpu xff0c io 压力并不大 xff0c 顺势排查一下链接数 xff0
  • MATLAB 比较好入门书籍有哪些推荐

    https www zhihu com topic 19559252 hot https www zhihu com question 19904418 作者 xff1a 陈村 链接 xff1a https www zhihu com qu
  • manjaro安装Microsoft Edge浏览器

    span class token function sudo span pacman S yay base devel yay S microsoft edge dev bin
  • 关于SQL SERVER注释快捷键

    SQL Server Management Stuido提供了键盘和按钮快捷方式来注释掉突出显示的代码 只需突出显示要禁用或注释掉的代码部分 xff0c 再单击SQL Editor工具栏上的Comment Selection按钮即可 xff
  • Linux 网络编程—— libnet库详细使用指南

    概述 通过 原始套接字实例 xff1a 发送 UDP 数据包 的学习 xff0c 我们组 UDP 数据包时常考虑字节流顺序 校验和计算等问题 xff0c 有时候会比较繁琐 xff0c 那么 xff0c 有没有一种更简单的方法呢 xff1f
  • 论文一:基于实体多元编码的时序知识图谱推理_彭成

    xff08 本文很好的介绍了时序知识图谱的推理 xff0c 重要 xff01 xff01 xff01 xff09 时序知识图谱定义 xff1a 时序知识图谱是一种多关系有向图 xff0c 结点时时序知识图谱中的实体 xff0c 有向边是实体
  • SQLException: null, message from server: “Host ‘10.112.71.80‘ is blocked because of many connection

    启动项目后也看到报 SQLException null message from server 34 Host 39 10 112 71 80 39 is blocked because of many conne 这一类异常翻译来看是由于
  • Python案例003——句子生成器

    目标 xff1a 通过用户提供的内容 xff0c 随机生成唯一的句子 提示 xff1a 以用户输入的名词 代词 形容词等作为输入 xff0c 然后将所有数据添加到句子中 xff0c 并将其组合返回 输出固定的 内容 43 用户输入的内容 c
  • 通过Python复制远程服务器下的文件到本地

    使用Python拷贝windown共享目录下的文件 1 先通过net use命令获取共享目录访问权限 2 使用xcopy命令进行文件拷贝到本地目录 代码如下 import os share user 61 39 user 39 share
  • Centos6.5下进行PHP版本升级

    统计插件 WP Statistics 要求PHP5 4以上 xff0c 可本机PHP为5 3 3 xff0c 无奈只有对服务器PHP进行升级 xff0c 遂写下本文 Step1 xff1a 查看安装服务器当前安装版本 php V Step2
  • Ubuntu18.04 设置 sudo 不需要输入密码

    1 在系统启动后 xff0c 对于有些系统设备操作 xff0c 需要使用root权限执行 xff1b 这时候往往需要用到sudo命令 2 使用sudo命令 xff0c 必须输入用户密码 xff0c 但是在应用程序里面 xff0c 输入密码操
  • ipa文件的安装方法

    ipa文件无法像android的apk那样直接安装 xff0c 是因为需要能直接安装ipa xff0c 打包ipa的时候 xff0c 是需要创建不同的证书和证书profile文件的 下面我对三种情况进行概述 1 company类型 xff0
  • Windows7睡眠后自动唤醒

    笔者的电脑 xff08 Windows7 64 位旗舰版 xff09 睡眠后 xff0c 隔段时间后会自动唤醒 经两项配置后 xff0c 解决了该问题 1 禁用唤醒定时器 控制面板里进入 34 电源选项 34 34 更改计划设置 34 界面
  • 开机动画制作及多分辨率适配

    1 开机动画制作 开机动画资源文件 xff1a bootanimation zip 解压后的文件目录 xff1a desc txt文件内容 xff1a 512 416 60 代表的分别是宽 xff0c 高 xff0c 帧数 xff1b 具体
  • 查看Settings中的值

    1 列出所有的值 settings list secure global 如 xff1a settings list global 2 查看指定的值 settings get secure global xxx 如 xff1a settin
  • product 分区和权限

    在 Android 9 及更高版本中 xff0c 权限和列入白名单过程的更改会影响 product 分区上授予特权应用权限的方式 permissions xml 文件必须与特权应用位于同一个分区中 之前有遇到过 xff0c 应用在produ
  • 判断字符串中只包含字母和数字

    最近做一个小小的项目 xff0c 有输入用户名一项 xff0c 要求只能输入字母和数字 即在用户输入用户名后 xff0c 要做一个关于用户名的合法判断 xff1a 只包含字母和数字 一开始以为这个超级简单啊 xff0c 想都没想就直接使用了
  • Android中修改默认字体的大小----fontScale

    有客户需求要修改系统中默认字体的大小 一般的步骤是 xff0c 在frameworks base core java android content res Configuration java文件中 xff0c 修改函数setToDefa
  • Apk解压后查看AndroidManifest.xml文件内容

    一般对于我来说如果需要知道一个apk的包名的话 xff0c 有两种比较快速的方式 xff1a xff08 1 xff09 使用命令 xff1a aapt dump badging xxx apk xff0c 一般是apk就在电脑上 xff0
  • Failed to load WebView provider: No WebView installed

    系统中已经集成了Chrome及WebviewGoogle xff0c 但是在打开个别使用到WebView的应用的时候 xff0c 还是会出现应用FC xff0c 如 xff1a Setting gt System gt About phon