Example #1
0
        public void ToPng(TaskCompletionSource <ToFileResult> taskCompletionSource, string html, string fileName, int width)
        {
            //var size = new Size(8.5, 11);
            //var externalPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
            //using (var dir = new Java.IO.File(externalPath))
            //using (var file = new Java.IO.File(dir + "/" + fileName + ".png"))
            //{
            //    if (!dir.Exists())
            //        dir.Mkdir();
            //    if (file.Exists())
            //        file.Delete();

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

            webView.Settings.JavaScriptEnabled = true;
#pragma warning disable CS0618 // Type or member is obsolete
            webView.DrawingCacheEnabled = true;
#pragma warning restore CS0618 // Type or member is obsolete
            webView.SetLayerType(LayerType.Software, null);

            //webView.Layout(0, 0, (int)((size.Width - 0.5) * 72), (int)((size.Height - 0.5) * 72));
            webView.Layout(0, 0, width, width);

            webView.SetWebViewClient(new WebViewCallBack(taskCompletionSource, fileName, new PageSize {
                Width = width
            }, null, OnPageFinished));
            webView.LoadData(html, "text/html; charset=utf-8", "UTF-8");
            //}
        }
Example #2
0
        public void ToPdf(TaskCompletionSource <ToFileResult> taskCompletionSource, string html, string fileName, PageSize pageSize, PageMargin margin)
        {
            var externalPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;

            using (var dir = new Java.IO.File(externalPath))
                using (var file = new Java.IO.File(dir + "/" + fileName + ".pdf"))
                {
                    if (!dir.Exists())
                    {
                        dir.Mkdir();
                    }
                    if (file.Exists())
                    {
                        file.Delete();
                    }

                    var webView = new Android.Webkit.WebView(Android.App.Application.Context);
                    webView.Settings.JavaScriptEnabled = true;
#pragma warning disable CS0618 // Type or member is obsolete
                    webView.DrawingCacheEnabled = true;
#pragma warning restore CS0618 // Type or member is obsolete
                    webView.SetLayerType(LayerType.Software, null);

                    //webView.Layout(0, 0, (int)((size.Width - 0.5) * 72), (int)((size.Height - 0.5) * 72));
                    webView.Layout(0, 0, (int)System.Math.Ceiling(pageSize.Width), (int)System.Math.Ceiling(pageSize.Height));

                    webView.LoadData(html, "text/html; charset=utf-8", "UTF-8");
                    webView.SetWebViewClient(new WebViewCallBack(taskCompletionSource, fileName, pageSize, margin, OnPageFinished));
                }
        }
Example #3
0
        public void PrintHtml(string html)
        {
            var webview = new Android.Webkit.WebView(MainActivity.Instance);

            webview.SetWebViewClient(new PrintHTMLWebClient());
            webview.LoadDataWithBaseURL(null, html, "text/HTML", "UTF-8", null);
        }
Example #4
0
        public async Task <string> ConvertHtmlToPDF(string html, string fileName)
        {
            var dir  = new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/Download/");
            var file = new Java.IO.File(dir + "/" + fileName + ".pdf");

            if (!dir.Exists())
            {
                dir.Mkdirs();
            }

            int x = 0;

            while (file.Exists())
            {
                x++;
                file = new Java.IO.File(dir + "/" + fileName + "(" + x + ")" + ".pdf");
            }

            var webpage = new Android.Webkit.WebView(MainActivity.Instance);
            //var windowManager = MainActivity.Instance.GetSystemService(Android.Content.Context.WindowService);
            //DisplayMetrics outMetrics = new DisplayMetrics();
            //windowManager.DefaultDisplay.GetMetrics(outMetrics);
            //int widthPixels = outMetrics.WidthPixels;
            //int heightPixels = outMetrics.HeightPixels;

            //int width = widthPixels;
            //int height = heightPixels;
            int width  = 2102;
            int height = 2937;

            webpage.Layout(0, 0, width, height);

            var client      = new WebViewCallBack(file.ToString());
            var tokenSource = new CancellationTokenSource();
            var task        = Task.Run(() =>
            {
                if (tokenSource.Token.IsCancellationRequested)
                {
                    return;
                }
                while (true)
                {
                    if (tokenSource.Token.IsCancellationRequested)
                    {
                        break;
                    }
                }
            }, tokenSource.Token);

            client.OnPageLoadFinished += (s, e) =>
            {
                tokenSource.Cancel();
            };
            webpage.SetWebViewClient(client);
            webpage.LoadDataWithBaseURL("", html, "text/html", "UTF-8", null);

            await task;

            return(file.ToString());
        }
Example #5
0
        private void InitElements()
        {
            Typeface tf = Typeface.CreateFromAsset(Assets, "FiraSansRegular.ttf");

            _urlEt         = FindViewById <EditText>(Resource.Id.urlET);
            _hintTv        = FindViewById <TextView>(Resource.Id.hintTV);
            _backRl        = FindViewById <RelativeLayout>(Resource.Id.backRL);
            _removeBn      = FindViewById <Button>(Resource.Id.removeBn);
            _acceptBn      = FindViewById <Button>(Resource.Id.acceptBn);
            _showBn        = FindViewById <Button>(Resource.Id.showBn);
            _webView       = FindViewById <Android.Webkit.WebView>(Resource.Id.webView);
            _headerTv      = FindViewById <TextView>(Resource.Id.headerTV);
            _hintTv.Text   = TranslationHelper.GetString("specifyYourAccountInSocialNetwork", _ci);
            _removeBn.Text = TranslationHelper.GetString("remove", _ci);
            _showBn.Text   = TranslationHelper.GetString("viewing", _ci);
            _acceptBn.Text = TranslationHelper.GetString("save", _ci);
            _backRl.Click += (s, e) => OnBackPressed();
            _headerTv.Text = HeaderValue;
            _urlEt.SetTypeface(tf, TypefaceStyle.Normal);
            _hintTv.SetTypeface(tf, TypefaceStyle.Normal);
            _removeBn.SetTypeface(tf, TypefaceStyle.Normal);
            _acceptBn.SetTypeface(tf, TypefaceStyle.Normal);
            _showBn.SetTypeface(tf, TypefaceStyle.Normal);
            _headerTv.SetTypeface(tf, TypefaceStyle.Normal);
            // Prevent redirecting to default browser.
            _webView.SetWebViewClient(new WebViewClient());
            _webView.Settings.JavaScriptEnabled = true;
            _webView.Clickable = false;
            _webView.Focusable = false;
            UpdateWebView();
            _urlEt.TextChanged += (s, e) =>
            {
                UrlString = _urlEt.Text;
                UpdateWebView();
                _webView.Visibility = ViewStates.Gone;
                // Second condition means that we do not need facebook and linkedin previews.
                if (!String.IsNullOrEmpty(_urlEt.Text) && UrlRoot != Constants.linkedinUrl && UrlRoot != Constants.facebookUrl)
                {
                    _showBn.Visibility = ViewStates.Visible;
                }
                else
                {
                    _showBn.Visibility = ViewStates.Gone;
                }
                //if (!UrlTextField.Text.ToLower().Contains("http"))
                //JoinIdAndLink();
            };
            //urlET.
            _showBn.Click += (s, e) =>
            {
                // Check if the user entered id of his profile.
                if (!_urlEt.Text.ToLower().Contains("http"))
                {
                    JoinIdAndLink();
                }
                _webView.Visibility = ViewStates.Visible;
                _showBn.Visibility  = ViewStates.Gone;
            };
        }
Example #6
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/");
                });
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.WebView> e)
        {
            base.OnElementChanged(e);
            _webView = Control;

            if (e.OldElement == null)
            {
                _webView.SetWebViewClient(new ExtendedWebViewClient(e.NewElement as ExtendedWebView));
            }
        }
        protected override void OnAttached()
        {
            if (Element is WebViewForms webViewForms &&
                Control is WebViewDroid webViewDroid)
            {
                _webViewForms = webViewForms;
                _webViewDroid = webViewDroid;

                _effectWebViewClient = new EffectWebViewClient(_webViewForms, _webViewDroid);
                _webViewDroid.SetWebViewClient(_effectWebViewClient);
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <Xamarin.Forms.WebView> e)
        {
            System.Diagnostics.Debug.WriteLine("ExtendedWebViewRenderer.OnElementChanged()");
            base.OnElementChanged(e);
            _xwebView = e.NewElement as ExtendedWebView;
            _webView  = Control;

            if (e.OldElement == null)
            {
                _webView.SetWebViewClient(new ExtendedWebViewClient());
                //WebSettings settings = _webView.Settings;
                //settings.JavaScriptEnabled = true;
            }
        }
        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);
        }
Example #11
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 #12
0
        public void ToPng(TaskCompletionSource <ToFileResult> taskCompletionSource, Xamarin.Forms.WebView xfWebView, string fileName)
        {
            if (Platform.CreateRendererWithContext(xfWebView, Settings.Context) is IVisualElementRenderer renderer)
            {
                Android.Webkit.WebView droidWebView = renderer.View as Android.Webkit.WebView;
                if (droidWebView == null && renderer.View is WebViewRenderer xfWebViewRenderer)
                {
                    droidWebView = xfWebViewRenderer.Control;
                }
                if (droidWebView != null)
                {
                    //var size = new Size(8.5, 11);
                    var externalPath = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
                    using (var dir = new Java.IO.File(externalPath))
                        using (var file = new Java.IO.File(dir + "/" + fileName + ".png"))
                        {
                            if (!dir.Exists())
                            {
                                dir.Mkdir();
                            }
                            if (file.Exists())
                            {
                                file.Delete();
                            }

                            droidWebView.SetLayerType(LayerType.Software, null);
                            droidWebView.Settings.JavaScriptEnabled = true;
#pragma warning disable CS0618 // Type or member is obsolete
                            droidWebView.DrawingCacheEnabled = true;
                            droidWebView.BuildDrawingCache();
#pragma warning restore CS0618 // Type or member is obsolete

                            droidWebView.SetWebViewClient(new WebViewCallBack(taskCompletionSource, fileName, OnPageFinished));
                        }
                }
            }
        }
Example #13
0
        protected override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _webView = this
                       .GetChildren(v => v is Android.Webkit.WebView)
                       .FirstOrDefault() as Android.Webkit.WebView;

            // For some reason, the native WebView requires this internal registration
            // to avoid launching an external task, out of context of the current activity.
            //
            // This will still be used to handle extra activity with the native control.
            _webView.SetWebViewClient(new InternalClient(this));
            _webView.SetWebChromeClient(new InternalWebChromeClient());
            _webView.Settings.JavaScriptEnabled   = true;
            _webView.Settings.DomStorageEnabled   = true;
            _webView.Settings.BuiltInZoomControls = true;
            _webView.Settings.DisplayZoomControls = false;
            _webView.Settings.SetSupportZoom(true);
            _webView.Settings.LoadWithOverviewMode = true;
            _webView.Settings.UseWideViewPort      = true;

            //Allow ThirdPartyCookies by default only on Android 5.0 and UP
            if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
            {
                Android.Webkit.CookieManager.Instance.SetAcceptThirdPartyCookies(_webView, true);
            }


            // The native webview control requires to have LayoutParameters to function properly.
            _webView.LayoutParameters = new ViewGroup.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);

            //The nativate WebView already navigate to a blank page if no source is set.
            //Avoid a bug where invoke GoBack() on WebView do nothing in Android 4.4
            this.UpdateFromInternalSource();
        }