【问题标题】:Android 9 API 28 ONLY WebView is showing a black pop up in some devicesAndroid 9 API 28 ONLY WebView 在某些设备中显示黑色弹出窗口
【发布时间】:2019-10-31 04:58:09
【问题描述】:

我一直试图弄清楚为什么 web 视图中的一个弹出窗口在某些设备中显示黑屏。请看附件 URL 作为 URI 工作,但不在 webview 内。

注意:网址似乎有 javascript 问题。不知道为什么 android 9 会阻止其内容

[chromium] [INFO:CONSOLE(3)] "由于目标被视为被动,无法在被动事件侦听器中阻止默认值。请参阅https://www.chromestatus.com/features/5093566007214080",来源:https://mylink.com/js/libs/jquery/jquery.min.js (3)

编辑:我使用渲染来获取当前位置

xaml:

 <local:GeoWebView x:Name="Webview" HorizontalOptions="FillAndExpand"  
    VerticalOptions="FillAndExpand" />

c#

Webview.Source = new UrlWebViewSource
            {
               Url=https://MyLink.com/thisismytesturl.htm
            };

渲染安卓:

public class GeoWebViewRenderer : WebViewRenderer
    {
        public GeoWebViewRenderer(Context context) : base(context)
        {
        }

          protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
         {
            base.OnElementChanged(e);

            Control.Settings.JavaScriptEnabled = true;
            Control.Settings.DomStorageEnabled=true;
          Control.Settings.JavaScriptCanOpenWindowsAutomatically=true;
            Control.SetWebChromeClient(new MyWebClient());
        }
    }

    public class MyWebClient : WebChromeClient
    {
        public override void OnGeolocationPermissionsShowPrompt(string 
         origin, GeolocationPermissions.ICallback callback)
        {
            callback.Invoke(origin, true, false);
        }
    }

2.它应该显示类似于图像的东西。

【问题讨论】:

  • 应该显示什么
  • 页面是如何加载的?本地源 HTML、URL、URL 但已编辑代码?
  • 1.您如何更新任何 WebClient 代码或您是否使用标准客户端? 2. 您是否编辑过 webview 的任何属性? 3.当你使用该设备的默认浏览器时,你看到黑屏了吗?
  • 您能否在以下位置设置断点:protected override void OnElementChanged(ElementChangedEventArgs e) {} 并检查单击弹出窗口时是否命中了该函数?它是否每次都重新创建一个新的网络客户端?
  • 在停止工作之前对代码进行了哪些更改?还是在您触摸它之前弹出窗口没有工作?

标签: android http xamarin.forms webview android-9.0-pie


【解决方案1】:

按照下面提到的步骤:

  1. 在清单文件中编辑 useCleartextTraffic 属性。

  2. 添加网络安全配置。

    <application
        android:usesCleartextTraffic="true">
    
    <base-config cleartextTrafficPermitted="true">
         <trust-anchors>
             <certificates src="system" />
             <certificates src="user" />
         </trust-anchors>
     </base-config>
    

【讨论】:

  • 我用的是Game maker Studio,不能直接把这个加到应用标签,但是有两个应用标签可以吗?
  • 不,它应该包含一个应用程序标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 2019-10-29
  • 2017-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多