コード例 #1
0
        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);
        }
コード例 #2
0
            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);
                }
            }