2017-10-09 32 views
0

有誰知道爲什麼WebView只顯示白色或空白頁面與我的網站網址?Xamarin Forms - Android無法加載網站與HybridWebViewRenderer

注意 如果我按住白色/空白頁,我可以選擇「全選」和「複製」。之後,我將它粘貼在便條中,我可以看到我的網站的內容。怎麼了?

我的代碼

var webView = new Android.Webkit.WebView(Forms.Context); 

        webView.Settings.JavaScriptEnabled = true; 
        webView.Settings.LoadsImagesAutomatically = true; 
        webView.SetWebViewClient(new MyBrowser()); 
        webView.Settings.SetAppCacheMaxSize(5 * 1024 * 1024); 
        webView.Settings.SetAppCachePath(Context.CacheDir.AbsolutePath); 
        webView.Settings.AllowFileAccess = true; 
        webView.Settings.SetAppCacheEnabled(true); 
        webView.Settings.CacheMode = CacheModes.Default; 
        webView.Settings.DomStorageEnabled = true; 
        webView.PostUrl("<MyURL>", Convert.FromBase64String("<mystring>")); 
       if (DetectConnection.checkInternetConnection()) 
        { 
         webView.Settings.CacheMode = CacheModes.CacheElseNetwork; 
        } 

        SetNativeControl(webView); 

       if (oldHWV != null) 
       { 

        Control.RemoveJavascriptInterface("jsBridge"); 

        oldHWV.Cleanup(); 

       } 

       if (newHWV != null) 
       { 

        Control.AddJavascriptInterface(new JSBridge(this), "jsBridge"); 

        Control.LoadUrl(Element.Uri); 

        InjectJS(JavaScriptFunction); 
       } 
      } 

      void InjectJS(string script) 

      { 

       if (Control != null) 
       { 

        Control.LoadUrl(string.Format("javascript: {0}", script)); 

       } 

      } 

class MyBrowser : WebViewClient 
    { 
     override public bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url) 
     { 
       view.LoadUrl(url); 
       return false; 
     } 

    } 

輸出

12月10日至9日:14:20.651 W /技術(18729):JNI RegisterNativeMethods: 嘗試註冊爲0本機方法 md5db941dcc072fe623e29eb3b9d0ecdde3.HybridWebViewRenderer 10-09 12:14:20.732 I/WebViewFactory(18729):加載com.android.webview 版本44.0.2403.119(代碼246011900)10-09 12:14:20.778 W/System (18729):ClassLoader引用未知路徑: /system/app/webview/lib/arm 10-09 12:14:20.796 I/LibraryLoader(18729): 時間來加載本地庫:9毫秒(時間戳258-267)10-09 12:14:20.796 I/LibraryLoader(18729):預期本機庫版本 號 「」,實際本地庫版本號 「」 [INFO:library_loader_hooks.cc(120)]鉻啓用日誌記錄:級別= 0,缺省冗長= 0 12月10日至9日:14:20.823 V/WebViewChromiumFactoryProvider(18729):綁定鉻到主要 彎針活套(main,tid 1){b95d216} 10-09 12:14:20.823 I/LibraryLoader(18729):預期的本地庫版本號 「」,實際本地庫版本號「」10-09 12:14:20.824 I /鉻(18729):[INFO:library_loader_hooks.cc(120)]鉻 日誌啓用:級別= 0,默認冗長度= 0 10-09 12:14:20.834 I/BrowserStartupController(18729):初始化鉻進程, singleProcess = true 10-09 12:14:20.835 W/art(18729):嘗試 刪除非JNI本地引用,螺紋10-09 12:14:20.836 E/SysUtils單元(18729):ApplicationContext已在ApplicationStatus 空[警告:resource_bundle.cc(285)] locale_file_path.empty()10-09 12:14:20.855 W /鉻(18729):[警告:resource_bundle.cc(285)] locale_file_path.empty()10-09 12:14:20.864 E/libEGL(18729): validate_display:255 error 3008(EGL_BAD_DISPLAY)10-09 12:14:20.864 E/libEGL(18729):validate_display:255 error 3008(EGL_BAD_DISPLAY) 10-09 12:14:20.924 E/DataReductionProxySettingListener(18729):No DRP 由於異常而導致的鍵:java.lang.ClassNotFoundException: com.android.webview.chromium.Drp 10-09 12:14:20.968 W/art(18729): 嘗試刪除非JNI本地引用,轉儲線程10-09 12:14:20.979 W/AwContents(18729):onDetachedFromWindow在 已經分離時調用。在 'HybridWebViewRenderer.cs:180,1' 忽略解決未決斷點爲void .Droid.MyBrowser.OnReceivedError(Android.Webkit.WebView 視圖,Android.Webkit.IWebResourceRequest請求, Android.Webkit.WebResourceError誤差)[0x00001 ]。 10-09 12:14:21.188 D/Mono(18729):Image addref Mono.Android.Export [0x969fcfc0] - > Mono.Android.Export.dll [0x969aa600]:2 10-09 12:14:21。188 D /單聲道
(18729):準備設置程序集'Mono.Android.Export' (Mono.Android.Export.dll)10-09 12:14:21.188 D/Mono(18729): Assembly Mono .Android.Export [0x969fcfc0]添加到域RootDomain, ref_count = 1 10-09 12:14:21.190 D /單聲道(18729):AOT:圖像 未找到'Mono.Android.Export.dll.so':dlopen失敗:library 「/data/app//lib/arm/libaot-Mono.Android.Export.dll.so」not found 10-09 12:14:21.191 D/Mono(18729):AOT:image ' /usr/local/lib/mono/aot-cache/arm/Mono.Android.Export.dll.so'not found:dlopen failed:library 「/data/app//lib/arm/libaot-Mono.Android .Export.dll.so「不是 found 10-09 12:14:21.191 D/Mono (18729):配置嘗試到 parse:'Mono.Android.Export.dll.config'。 10-09 12:14:21.191 D/Mono
(18729):配置嘗試解析: '/usr/local/etc/mono/assemblies/Mono.Android.Export/Mono.Android.Export.config'。程序庫文件文件網可用的操作系統文件說明Mono.Android.Export [0x969fcfc0] - > mscorlib [0xa9e73f00]:66已加載 程序集:Mono.Android.Export.dll [External] 10-09 12:14:21.200 D/Mono (18729):Assembly Ref addref Mono.Android.Export [0x969fcfc0] - > Mono.Android [0xa8ee2d80]:36 10-09 12:14:21.215 D/Mono 18729): 大會參考的AddRef Mono.Android.Export [0x969fcfc0] - > 的System.Xml [0x98469fc0]:4加載組件:callback_factory [外部] 12月10日至9日:14:21.382 d /單聲道(18729) :Assembly Ref addref Mono.Android.Export [0x969fcfc0] - > System.Core [0xa8ee3680]:8 10-09 12:14:21.389 W/art(18729):試圖刪除非-JNI本地 參考,轉儲線程10-09 12:14:21.389 W/art(18729): 嘗試刪除非JNI本地引用,轉儲線程10-09 12:14:21.402 D /單聲道(18729) :DllImport搜索:'__Internal' ('(null)')。 10-09 12:14:21.402 D/Mono(18729):搜索 'java_interop_jnienv_call_float_method_a'。 10-09 12:14:21.402 D/Mono
(18729):探測'java_interop_jnienv_call_float_method_a'。 10-09 12:14:21.402 D /單音(18729):找到 'java_interop_jnienv_call_float_method_a'。 10-09 12:14:21.487 I /編舞師(18729):跳過52幀!該應用可以是 做它的主線程的工作太多了。 [警告:data_reduction_proxy_config.cc(423)] SPDY代理OFF在 啓動12月10日至9日:14:21.506 W /鉻(18729): [警告:data_reduction_proxy_config.cc(423)]在SPDY啓動 10代理OFF -09 12:14:21.570 W/BindingManager的(18729):無法調用 determinedVisibility() - 從沒見過的PID的連接:18729 12月10日至9日:14:21.824 W/BindingManager的(18729):無法調用 determinedVisibility () - 從沒見過的PID的連接:18729

預先感謝您

+0

請檢查網址是否正確,並請嘗試使用您的測試設備/模擬器的瀏覽器打開您的網站,檢查它是否可以正確打開。 –

+0

該網址是正確的,我可以用設備/模擬器的瀏覽器打開它。如果我按住白色/空白頁面,我可以選擇「全選」和「複製」。之後,我將它粘貼在便條中,我可以看到我的網站的內容。怎麼了? – Mikasa

+0

我想這是佈局或樣式的問題,你可以請嘗試設置webview的大小,看看它是否解決了這個問題? –

回答

0

不同SOLUT後網絡上的離子我創建了一個pageRenderer。 我不知道這是不是最好的方法,但它適用於我。 如果有人有更好的解決方案,請告訴我。 預先感謝您。

[assembly: ExportRenderer(typeof(WebPage), typeof(WebPageRenderer))] 
namespace <my-namespace> 
{ 
    class WebPageRenderer : PageRenderer 
    { 
     global::Android.Views.View view; 
     global::Android.Webkit.WebView webView; 

     Activity activity; 

     protected override void OnElementChanged(ElementChangedEventArgs<Page> e) 
     { 
      base.OnElementChanged(e); 

      if (e.OldElement != null || Element == null) 
      { 
       return; 
      } 

      try 
      { 
       Setup(); 
       AddView(view); 
      } 
      catch (Exception ex) 
      { 
       System.Diagnostics.Debug.WriteLine(@"ERROR: ", ex.Message); 
      } 
     } 

     void Setup() 
     { 

      activity = this.Context as Activity; 

      view = activity.LayoutInflater.Inflate(Resource.Layout.activity_webview, this, false); 
      webView = view.FindViewById<Android.Webkit.WebView>(Resource.Id.webview); 
      webView.SetWebViewClient(new WebViewClient()); 
      webView.Settings.JavaScriptEnabled = true; 
      webView.LoadUrl("<my-url>"); 
     } 

     protected override void OnLayout(bool changed, int l, int t, int r, int b) 
     { 
      base.OnLayout(changed, l, t, r, b); 

      var msw = MeasureSpec.MakeMeasureSpec(r - l, MeasureSpecMode.Exactly); 

      var msh = MeasureSpec.MakeMeasureSpec(b - t, MeasureSpecMode.Exactly); 

      view.Measure(msw, msh); 

      view.Layout(0, 0, r - l, b - t); 

     } 
    } 

}