@@ -40,24 +40,46 @@ public override void OnReceivedError(Android.Webkit.WebView view, IWebResourceRe
4040 renderer . Element . Navigating = false ;
4141 }
4242
43- public override bool ShouldOverrideUrlLoading ( Android . Webkit . WebView view , IWebResourceRequest request )
43+ public override WebResourceResponse ShouldInterceptRequest ( Android . Webkit . WebView view , IWebResourceRequest request )
4444 {
45- if ( Reference == null || ! Reference . TryGetTarget ( out FormsWebViewRenderer renderer ) ) return true ;
46- if ( renderer . Element == null ) return true ;
45+ if ( Reference == null || ! Reference . TryGetTarget ( out FormsWebViewRenderer renderer ) ) goto EndShouldInterceptRequest ;
46+ if ( renderer . Element == null ) goto EndShouldInterceptRequest ;
4747
4848 string url = request . Url . ToString ( ) ;
4949 var response = renderer . Element . HandleNavigationStartRequest ( url ) ;
5050
5151 if ( response . Cancel || response . OffloadOntoDevice )
5252 {
53- if ( response . OffloadOntoDevice )
54- AttemptToHandleCustomUrlScheme ( view , url ) ;
53+ Device . BeginInvokeOnMainThread ( ( ) =>
54+ {
55+ if ( response . OffloadOntoDevice )
56+ AttemptToHandleCustomUrlScheme ( view , url ) ;
5557
56- view . StopLoading ( ) ;
57- return true ;
58+ view . StopLoading ( ) ;
59+ } ) ;
5860 }
5961
60- return false ;
62+ EndShouldInterceptRequest :
63+ return base . ShouldInterceptRequest ( view , request ) ;
64+ }
65+
66+ void CheckResponseValidity ( Android . Webkit . WebView view , string url )
67+ {
68+ if ( Reference == null || ! Reference . TryGetTarget ( out FormsWebViewRenderer renderer ) ) return ;
69+ if ( renderer . Element == null ) return ;
70+
71+ var response = renderer . Element . HandleNavigationStartRequest ( url ) ;
72+
73+ if ( response . Cancel || response . OffloadOntoDevice )
74+ {
75+ Device . BeginInvokeOnMainThread ( ( ) =>
76+ {
77+ if ( response . OffloadOntoDevice )
78+ AttemptToHandleCustomUrlScheme ( view , url ) ;
79+
80+ view . StopLoading ( ) ;
81+ } ) ;
82+ }
6183 }
6284
6385 public override void OnPageStarted ( Android . Webkit . WebView view , string url , Bitmap favicon )
0 commit comments