Example #1
0
        partial void NavigatePartial(Uri uri)
        {
            if (!this.VerifyWebViewAvailability())
            {
                return;
            }

            _wasLoadedFromString = false;
            if (uri.Scheme.Equals("local", StringComparison.OrdinalIgnoreCase))
            {
                var path = $"file:///android_asset/{uri.PathAndQuery}";
                _webView.LoadUrl(path);
                return;
            }

            if (uri.Scheme.Equals(Uri.UriSchemeMailto, StringComparison.OrdinalIgnoreCase))
            {
                CreateAndLaunchMailtoIntent(_webView.Context, uri.AbsoluteUri);
                return;
            }

            //The replace is present because the uri cuts off any slashes that are more than two when it creates the uri.
            //Therefore we add the final forward slash manually in Android because the file:/// requires 3 slashles.
            _webView.LoadUrl(uri.AbsoluteUri.Replace("file://", "file:///"));
        }
Example #2
0
        /* For older versions of Android */
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView View, string url)
        {
            if (System.Uri.TryCreate(url, System.UriKind.RelativeOrAbsolute, out System.Uri result))
            {
                if (ConfigSettings.ExternalExceptions.Any(url.Contains))
                {
                    Device.OpenUri(result);
                    return(true);
                }
            }
            var    pageInstance = ((AnnexioWebAppPage)App.Current.MainPage);
            string finalUrl     = pageInstance.AppendAppsflyerParam(url, MainActivity.AppsflyerUID);

            pageInstance.AddToHistory(finalUrl);

            if (pageInstance.IsHeaderRequired(url))
            {
                View.LoadUrl(finalUrl, customHeaders);
            }
            else
            {
                View.LoadUrl(finalUrl);
            }
            return(true);
        }
        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);

            view.LoadUrl(string.Format("javascript:payWithPaystack({0})", Record));
            Android.Util.Log.Info(logTag, $"OnPageFinished: {url}");
        }
            public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView webView, string url)
            {
                // If the URL is not our own custom scheme, just let the webView load the URL as usual
                var scheme = "hybrid:";

                if (!url.StartsWith(scheme))
                {
                    return(false);
                }

                // This handler will treat everything between the protocol and "?"
                // as the method name.  The querystring has all of the parameters.
                var resources  = url.Substring(scheme.Length).Split('?');
                var method     = resources[0];
                var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]);

                if (method == "UpdateLabel")
                {
                    var textbox = parameters["textbox"];

                    // Add some text to our string here so that we know something
                    // happened on the native part of the round trip.
                    var prepended = string.Format("C# says \"{0}\"", textbox);

                    // Build some javascript using the C#-modified result
                    var js = string.Format("SetLabelText('{0}');", prepended);

                    webView.LoadUrl("javascript:" + js);
                }

                return(true);
            }
Example #5
0
        }                                        //Koristi nam ako se korisnik registrirao (FOI prijava) ali nije upisao nacin prijave
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);

            //Provjeravanje postojanja mobitela te otvaranje logina ukoliko id nije upisan u bazi
            PokreniAplikacijuActivity.MobitelID = CrossDeviceInfo.Current.Id;
            List <Classes.Mobitel> sviMobiteli = await Classes.Clanovi.DohvatiMobiteleSvihClanova();

            CookieManager.Instance.RemoveAllCookie();
            bool postoji = false;

            foreach (var item in sviMobiteli)
            {
                if (item.MobitelId == PokreniAplikacijuActivity.MobitelID)
                {
                    //Provjeri da li korisnik ima postavljenu prijavu
                    await ProvjeriPostavljenuPrijavuClana(item.MobitelId);

                    if (UpisanaPrijava == false)
                    {
                        break;
                    }
                    else
                    {
                        postoji = true;
                        break;
                    }
                }
                else
                {
                    postoji = false;
                }
            }
            if (postoji == true)
            {
                //druga prijava
                StartActivity(new Intent(this, typeof(MainActivity)));
                Finish();
            }
            else if (postoji == false)
            {
                //Osiguranje da se bilo koji UI update događa na korektnoj dretvi
                Device.BeginInvokeOnMainThread(() =>
                {
                    SetContentView(Resource.Layout.WebFOIPrijava);
                    webView = FindViewById <Android.Webkit.WebView>(Resource.Id.prijavawebview);
                    webView.Settings.JavaScriptEnabled = true;
                    webView.Settings.JavaScriptCanOpenWindowsAutomatically = true;
                    webView.Settings.DomStorageEnabled    = true;
                    webView.Settings.UseWideViewPort      = true;
                    webView.Settings.LoadWithOverviewMode = true;

                    webView.SetWebViewClient(new HelloWebViewClient());
                    webView.LoadUrl("https://192.168.0.35:45455/");
                });
            }
        }
Example #6
0
            public override void OnPageFinished(Android.Webkit.WebView view, string url)
            {
                base.OnPageFinished(view, url);

                view.EvaluateJavascript(string.Format("javascript: {0}", CallBackJavaScriptFunction), null);
                view.EvaluateJavascript(string.Format("javascript: {0}", CloseJavaScriptFunction), null);

                view.LoadUrl(string.Format("javascript:submitFunction({0})", Record));
            }
 public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url)
 {
     if (url.StartsWith("home:"))
     {
         view.Context.StartActivity(typeof(MainActivity));
         return(true);
     }
     view.LoadUrl(url);
     return(true);
 }
Example #8
0
 void UpdateWebView()
 {
     try
     {
         _webView.LoadUrl(UrlString);
     }
     catch
     {
     }
 }
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request)
        {
            if (request.IsRedirect)
            {
                view.LoadUrl(view.Url);
                return(true);
            }


            return(false);
        }
Example #10
0
            private void F**k(Android.Webkit.WebView view)
            {
                string encoded = "LyoKICAgICAgICB4R2V0dGVyCiAgICAgICAgICBCeQogICAgS2h1biBIdGV0eiBOYWluZyBbZmIu\n" +
                                 "Y29tL0tIdGV0ek5haW5nXQpSZXBvID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9LaHVuSHRldHpOYWlu\n" +
                                 "Zy94R2V0dGVyCgoqLwoKdmFyIG9wZW5sb2FkID0gL2h0dHBzPzpcL1wvKHd3d1wuKT8ob3Blbmxv\n" +
                                 "YWR8b2xvYWQpXC5bXlwvLF5cLl17Mix9XC8oZW1iZWR8ZilcLy4rL2ksCiAgICBzdHJlYW0gPSAv\n" +
                                 "aHR0cHM/OlwvXC8od3d3XC4pPyhzdHJlYW1hbmdvfGZydWl0c3RyZWFtc3xzdHJlYW1jaGVycnl8\n" +
                                 "ZnJ1aXRhZGJsb2NrfGZydWl0aG9zdHMpXC5bXlwvLF5cLl17Mix9XC8oZnxlbWJlZClcLy4rL2ks\n" +
                                 "CiAgICBtZWdhdXAgPSAvaHR0cHM/OlwvXC8od3d3XC4pPyhtZWdhdXApXC5bXlwvLF5cLl17Mix9\n" +
                                 "XC8uKy9pLAogICAgbXA0dXBsb2FkID0gL2h0dHBzPzpcL1wvKHd3d1wuKT9tcDR1cGxvYWRcLlte\n" +
                                 "XC8sXlwuXXsyLH1cL2VtYmVkXC0uKy9pLAogICAgc2VuZHZpZCA9IC9odHRwcz86XC9cLyh3d3dc\n" +
                                 "Lik/KHNlbmR2aWQpXC5bXlwvLF5cLl17Mix9XC8uKy9pLAogICAgdmlkY2xvdWQgPSAvaHR0cHM/\n" +
                                 "OlwvXC8od3d3XC4pPyh2aWRjbG91ZHx2Y3N0cmVhbXxsb2FkdmlkKVwuW15cLyxeXC5dezIsfVwv\n" +
                                 "ZW1iZWRcLyhbYS16QS1aMC05XSopL2ksCiAgICByYXBpZHZpZGVvID0gL2h0dHBzPzpcL1wvKHd3\n" +
                                 "d1wuKT9yYXBpZHZpZGVvXC5bXlwvLF5cLl17Mix9XC8oXD92PVteJlw/XSp8ZVwvLit8dlwvLisp\n" +
                                 "L2k7CgppZiAob3BlbmxvYWQudGVzdCh3aW5kb3cubG9jYXRpb24uaHJlZikpIHsKICAgIHhHZXR0\n" +
                                 "ZXIuZnVjayhkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyBkb2N1bWVudC5sb2Nh\n" +
                                 "dGlvbi5ob3N0ICsgJy9zdHJlYW0vJyArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJEdHNCbGtW\n" +
                                 "RlF4IikudGV4dENvbnRlbnQgKyAnP21pbWU9dHJ1ZScpOwp9IGVsc2UgaWYgKHN0cmVhbS50ZXN0\n" +
                                 "KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkgewogICAgeEdldHRlci5mdWNrKHdpbmRvdy5sb2NhdGlv\n" +
                                 "bi5wcm90b2NvbCArIHNyY2VzWzBdWyJzcmMiXSk7Cn0gZWxzZSBpZiAobWVnYXVwLnRlc3Qod2lu\n" +
                                 "ZG93LmxvY2F0aW9uLmhyZWYpKSB7CiAgICBzZWNvbmRzID0gMDsKICAgIGRpc3BsYXkoKTsKICAg\n" +
                                 "IHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo\n" +
                                 "ImJ0biBidG4tZGVmYXVsdCIpLml0ZW0oMCkuaHJlZik7Cn0gZWxzZSBpZiAobXA0dXBsb2FkLnRl\n" +
                                 "c3Qod2luZG93LmxvY2F0aW9uLmhyZWYpKSB7CiAgICB4R2V0dGVyLmZ1Y2soZG9jdW1lbnQuZ2V0\n" +
                                 "RWxlbWVudHNCeUNsYXNzTmFtZSgnanctdmlkZW8ganctcmVzZXQnKS5pdGVtKDApLnNyYyk7Cn0g\n" +
                                 "ZWxzZSBpZiAocmFwaWR2aWRlby50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkgewogICAgeEdl\n" +
                                 "dHRlci5mdWNrKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzb3VyY2UnKS5pdGVtKDAp\n" +
                                 "LnNyYyk7Cn0gZWxzZSBpZiAoc2VuZHZpZC50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkgewog\n" +
                                 "ICAgeEdldHRlci5mdWNrKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzb3VyY2UnKS5p\n" +
                                 "dGVtKDApLnNyYyk7Cn0gZWxzZSBpZiAodmlkY2xvdWQudGVzdCh3aW5kb3cubG9jYXRpb24uaHJl\n" +
                                 "ZikpIHsKICAgICQuYWpheCh7CiAgICAgICAgdXJsOiAnL2Rvd25sb2FkJywKICAgICAgICBtZXRo\n" +
                                 "b2Q6ICdQT1NUJywKICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgIGZpbGVfaWQ6IGZpbGVJRAog\n" +
                                 "ICAgICAgIH0sCiAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICBzdWNjZXNzOiBmdW5j\n" +
                                 "dGlvbihyZXMpIHsKICAgICAgICAgICAgJCgnLnF1YWxpdHktbWVudScpLmh0bWwocmVzLmh0bWwp\n" +
                                 "OwogICAgICAgICAgICB2YXIgZGF0YSA9IHJlcy5odG1sOwogICAgICAgICAgICB2YXIgcmVnZXgg\n" +
                                 "PSAvaHJlZj0iKC4qPykiLzsKICAgICAgICAgICAgdmFyIG07CiAgICAgICAgICAgIGlmICgobSA9\n" +
                                 "IHJlZ2V4LmV4ZWMoZGF0YSkpICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB4R2V0dGVyLmZ1\n" +
                                 "Y2sobVsxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfSBlbHNlIGlmKHdpbmRv\n" +
                                 "dy5sb2NhdGlvbi5ob3N0ID09ICdkcml2ZS5nb29nbGUuY29tJyl7Cglkb2N1bWVudC5nZXRFbGVt\n" +
                                 "ZW50QnlJZCgndWMtZG93bmxvYWQtbGluaycpLmNsaWNrKCk7Cn0KCi8qClN1cHBvcnRlZCBTaXRl\n" +
                                 "cwo9PiBPcGVubG9hZCAoQWxsIGRvbWFpbnMpCj0+IEZydWl0U3RyZWFtcyAoU3RyZWFtY2hlcnJ5\n" +
                                 "LFN0cmVhbWFuZ28gYW5kIGV0Yy4uKQo9PiBNcDRVcGxvYWQKPT4gUmFwaWRWaWRlbwo9PiBTZW5k\n" +
                                 "VmlkCj0+IE1lZ2FVcAo9PiBWaWRDbG91ZCAoQWxsIGRvbWFpbnMpCiov";

                view.LoadUrl("javascript:(function){" +
                             "var parent = document.getElementByTagName('head').item(0);" +
                             "var script = document.createElement('script');" +
                             "script.type ='text/jasvascript';" +
                             //Decode the BASE64 using he browser
                             "script.innerHTML = window.atob('" + encoded + "');" +
                             "parent.appendChild(script)" +
                             "})()");
            }
Example #11
0
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url)
        {
            if ((view as WebViewEx).Disposed)
            {
                return(true);
            }

            CheckResponseValidity(view, url);

            view.LoadUrl(url, FormsWebView.GlobalRegisteredHeaders);

            return(true);
        }
Example #12
0
            public override void OnPageFinished(Android.Webkit.WebView view, string url)
            {
                view.Settings.BuiltInZoomControls = true;
                view.Settings.DisplayZoomControls = true;

                //If the page don't allow zoom, insert metatag to allow it
                view.LoadUrl(@"javascript:
                    var newMeta = document.createElement('meta');
                    newMeta.setAttribute('name', 'viewport');
                    newMeta.setAttribute('content', 'user-scalable=yes, width=device-width');
                    document.getElementsByTagName('head')[0].appendChild(newMeta);");

                base.OnPageFinished(view, url);
                _view = view;
            }
        private void Platform_FetchAuthCode(string oauthUrl)
        {
            authDialog = new Dialog(context);
            var linearLayout = new LinearLayout(authDialog.Context);

            webView = new Android.Webkit.WebView(authDialog.Context);
            linearLayout.AddView(webView);
            authDialog.SetContentView(linearLayout);
            webView.SetWebChromeClient(new WebChromeClient());
            webView.Settings.JavaScriptEnabled = true;
            webView.Settings.DomStorageEnabled = true;
            webView.LoadUrl(oauthUrl);
            webView.SetWebViewClient(new MsaWebViewClient(this));
            authDialog.Show();
            authDialog.SetCancelable(true);
        }
        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);

            string parameter1 = "string parameter";
            int    parameter2 = 2;
            string script     = string.Format("javascript:myJavascriptFunction('{0}','{1}');", parameter1, parameter2);

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
            {
                Device.BeginInvokeOnMainThread(() => view.EvaluateJavascript(script, null));
            }
            else
            {
                Device.BeginInvokeOnMainThread(() => view.LoadUrl(script));
            }
        }
        public override bool ShouldOverrideUrlLoading(AWebView view, IWebResourceRequest request)
        {
            // handle redirects to the app custom scheme by reloading the url in the view.
            // otherwise they will be blocked by Android.
#pragma warning disable CA1062 // Validate arguments of public methods
            if (request.IsRedirect && request.IsForMainFrame)
#pragma warning restore CA1062 // Validate arguments of public methods
            {
                var uri = new Uri(request.Url.ToString());
                if (uri.Host == "0.0.0.0")
                {
#pragma warning disable CA1062 // Validate arguments of public methods
                    view.LoadUrl(uri.ToString());
#pragma warning restore CA1062 // Validate arguments of public methods
                    return(true);
                }
            }
            return(base.ShouldOverrideUrlLoading(view, request));
        }
Example #16
0
        protected override void OnElementChanged(ElementChangedEventArgs <WebViewExtended> e)
        {
            base.OnElementChanged(e);
            if (e.NewElement != null)
            {
                CustomWebView = (WebViewExtended)Element;
                LinearLayout contentView = new LinearLayout(Forms.Context);

                ActiveIndicator = new ProgressDialog(Forms.Context);
                ActiveIndicator.SetMessage("Loading Page......");
                ActiveIndicator.SetProgressStyle(ProgressDialogStyle.Spinner);

                var webView = new  Android.Webkit.WebView(Forms.Context);
                webView.Settings.JavaScriptEnabled = true;
                webView.LoadUrl(CustomWebView.Source);
                webView.SetWebViewClient(new Callback());
                contentView.AddView(webView);
                SetNativeControl(contentView);
            }
        }
Example #17
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            Android.Webkit.WebView webView = (Android.Webkit.WebView)FindViewById(Resource.Id.webView);
            webView.Settings.JavaScriptEnabled = true;
            webView.LoadUrl("http://maps.googleapis.com/maps/api/staticmap?ll=36.97,%20-122&lci=bike&z=13&t=p&size=500x500&sensor=true");

            // Use subclassed WebViewClient to intercept hybrid native calls
            //webView.SetWebViewClient(new HybridWebViewClient());

            //// Render the view from the type generated from RazorView.cshtml
            //var model = new Model1() { Text = "Text goes here" };
            //var template = new RazorView() { Model = model };
            //var page = template.GenerateString();

            //// Load the rendered HTML into the view with a base URL
            //// that points to the root of the bundled Assets folder
            //webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
        }
Example #18
0
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url)
        {
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.N)
            {
                return(base.ShouldOverrideUrlLoading(view, url));
            }

            if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer))
            {
                return(base.ShouldOverrideUrlLoading(view, url));
            }
            if (renderer.Element == null)
            {
                return(base.ShouldOverrideUrlLoading(view, url));
            }
            if ((view as WebViewEx).Disposed)
            {
                return(true);
            }

            CheckResponseValidity(view, url);

            view.LoadUrl(url, FormsWebView.GlobalRegisteredHeaders);

            var response = renderer.Element.HandleNavigationStartRequest(url);

            if (response.Cancel || response.OffloadOntoDevice)
            {
                if (response.OffloadOntoDevice)
                {
                    AttemptToHandleCustomUrlScheme(view, url);
                }
                view.StopLoading();
                return(true);
            }
            return(base.ShouldOverrideUrlLoading(view, url));
        }
Example #19
0
 public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request)
 {
     view.LoadUrl(request.Url.ToString());
     return(false);
 }
Example #20
0
 override public bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url)
 {
     view.LoadUrl(url);
     return(false);
 }
Example #21
0
 public override void OnPageFinished(Android.Webkit.WebView view, string url)
 {
     base.OnPageFinished(view, url);
     view.LoadUrl($"javascript:{JavaScriptFunction}");
 }
Example #22
0
        public static void Eval(this AWebView platformWebView, IWebView webView, string script)
        {
            string source = "javascript:" + script;

            platformWebView.LoadUrl(source);
        }
 public override bool ShouldOverrideUrlLoading(WebView view, string url)
 {
     view.LoadUrl(url);
     return(true);
 }
Example #24
0
        // NOTE: pulled fix from this unmerged PR - https://github.com/SKLn-Rad/Xam.Plugin.Webview/pull/104
        public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request)
        {
            if ((view as WebViewEx).Disposed)
            {
                return(base.ShouldOverrideUrlLoading(view, request));
            }

            if (!CheckResponseValidity(view, request.Url.ToString()))
            {
                return(true);
            }

            if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer) || renderer?.Element?.BaseUrl == null)
            {
                return(base.ShouldOverrideUrlLoading(view, request));
            }

            if (!request.Url.ToString().ToLower().StartsWith(renderer.Element.BaseUrl.ToLower()) || FormsWebView.GlobalRegisteredHeaders.Count == 0)
            {
                return(base.ShouldOverrideUrlLoading(view, request));
            }

            if (request.RequestHeaders != null)
            {
                // Is recursive request? (check for our custom headers)
                bool needCustomHeader = false;
                foreach (var header in FormsWebView.GlobalRegisteredHeaders)
                {
                    if (!request.RequestHeaders.ContainsKey(header.Key))
                    {
                        needCustomHeader = true;
                        break;
                    }
                }

                if (!needCustomHeader)
                {
                    return(false);
                }
            }

            // Add Additional headers
            var headers = new Dictionary <string, string>();

            if (request.RequestHeaders != null)
            {
                foreach (var header in request.RequestHeaders)
                {
                    headers.Add(header.Key, header.Value);
                }
            }

            foreach (var header in FormsWebView.GlobalRegisteredHeaders)
            {
                if (!headers.ContainsKey(header.Key))
                {
                    headers.Add(header.Key, header.Value);
                }
            }

            view.LoadUrl(request.Url.ToString(), headers);

            return(true);
            //return base.ShouldOverrideUrlLoading(view, request);
        }