public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView View, Android.Webkit.IWebResourceRequest request) { if (System.Uri.TryCreate(request.Url.ToString(), System.UriKind.RelativeOrAbsolute, out System.Uri result)) { if (ConfigSettings.ExternalExceptions.Any(request.Url.ToString().Contains)) { Device.OpenUri(result); return(true); } } var pageInstance = ((AnnexioWebAppPage)App.Current.MainPage); string finalUrl = pageInstance.AppendAppsflyerParam(request.Url.ToString(), MainActivity.AppsflyerUID); pageInstance.AddToHistory(finalUrl); if (pageInstance.IsHeaderRequired(request.Url.ToString())) { View.LoadUrl(finalUrl, customHeaders); } else { View.LoadUrl(finalUrl); } return(true); }
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, Android.Webkit.IWebResourceRequest request) { string url = request.Url.ToString(); if (url.IsNullOrWhiteSpace()) { return(false); } if (url.StartsWith("url://") || url.StartsWith("http://") || url.StartsWith("https://") || url.StartsWith("ftp://")) { return(base.ShouldOverrideUrlLoading(view, request)); } try { // Intent intent = new Intent(Intent.ACTION_VIEW, Android.Net.Uri.Parse(url)); // Java 源码 // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Java 源码 Intent intent = new Intent(Intent.ActionView, Android.Net.Uri.Parse(url)); intent.SetFlags(ActivityFlags.NewTask); Android.App.Application.Context.StartActivity(intent); return(true); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.GetFullInfo()); System.Diagnostics.Debugger.Break(); // 防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash) // 没有安装该app时,返回true,表示拦截自定义链接,但不跳转,避免弹出上面的错误页面 return(true); } }