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"); //} }
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)); } }
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); }
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()); }
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; }; }
} //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); }
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); } }
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)); } } } }
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(); }