/// <summary> /// Called from the native webview when navigation is started. /// NOTE: WebViewNavigationStartingEventArgs.Cancel does not work on Unity version 2017.2.0 /// The internal structure of UWP support seems to have changed a lot on 2017.2.0 /// Unity has a mechanism called AppCallback to synchronize Xaml UI thread and Unity App thread. /// BTW, UnityEngine.WSA.Application.InvokeOnAppThread occasionally gets freezed. /// I don't know exactly why this method does not work. If it's a simple bug, Unity will be patched later /// </summary> private static void OnNavigationStarting(WebViewClient sender, WebViewNavigationStartingEventArgs args) { GameObject webView = GameObject.Find(sender.Name); if (webView != null) { if (string.IsNullOrEmpty(args.CustomMessage) == false) { webView.SendMessage( #if UNIWEBVIEW3_SUPPORTED "MessageReceived", #else "ReceivedMessage", #endif args.Uri.ToString(), SendMessageOptions.DontRequireReceiver); if (args.CustomMessage == "close" || args.CustomMessage == "close/") { webView.SendMessage("WebViewDone", string.Empty, SendMessageOptions.DontRequireReceiver); } } else { webView.SendMessage( #if UNIWEBVIEW3_SUPPORTED "PageStarted", #else "LoadBegin", #endif args.Uri.ToString(), SendMessageOptions.DontRequireReceiver); } } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); if (MainActivity.Activities.ContainsKey("SubwayInfoActivity")) { MainActivity.Activities["SubwayInfoActivity"].Finish(); MainActivity.Activities.Remove("SubwayInfoActivity"); MainActivity.Activities.Add("SubwayInfoActivity", this); } else { MainActivity.Activities.Add("SubwayInfoActivity", this); } // Set our view from the "main" layout resource RequestWindowFeature(WindowFeatures.NoTitle); SetContentView(Resource.Layout.WebviewLayout); string stationName = Intent.GetStringExtra("StationName"); string strURL = @"http://m.seoul.go.kr/traffic/SubInfoSearchList.do?subSearch=" + URLEncoder.Encode(stationName, "EUC-KR") + "&flag=4"; mWebContainer = FindViewById <FrameLayout>(Resource.Id.frameLayout1); mWebView = new WebView(this); mWebContainer.AddView(mWebView); webSettings = mWebView.Settings; mWebClient = new WebViewClient(); mWebView.SetWebViewClient(mWebClient); mWebView.LoadUrl(strURL); }
protected override void OnElementChanged(ElementChangedEventArgs <WeavyWebView> e) { base.OnElementChanged(e); if (Control == null) { var webView = new Android.Webkit.WebView(_context); webView.Settings.JavaScriptEnabled = true; webView.Settings.DomStorageEnabled = true; Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true); webView.LayoutParameters = new Android.Widget.LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent); webView.Settings.SetRenderPriority(WebSettings.RenderPriority.High); _webViewClient = GetWebViewClient(); webView.SetWebViewClient(_webViewClient); _webChromeClient = new WeavyWebChromeClient(); _webChromeClient.SetContext(Context); webView.SetWebChromeClient(_webChromeClient); var cookieManager = CookieManager.Instance; cookieManager.SetAcceptCookie(true); cookieManager.SetAcceptThirdPartyCookies(webView, true); SetNativeControl(webView); } if (e.OldElement != null) { Control.RemoveJavascriptInterface("jsBridge"); var hybridWebView = e.OldElement as WeavyWebView; //hybridWebView.Cleanup(); } if (e.NewElement != null) { var newElementController = e.NewElement as WeavyWebView; Control.AddJavascriptInterface(new JSBridge(this), "jsBridge"); // handle load requests newElementController.LoadRequested += OnLoadRequested; // handle reload requests newElementController.ReloadRequested += OnReloadRequested; // handle javascript injection requests newElementController.JavaScriptLoadRequested += OnJavaScriptLoadRequested; // handle go back requests newElementController.GoBackRequested += OnGoBackRequested; // handle go formward requests newElementController.GoForwardRequested += OnGoForwardRequested; newElementController.OnInitFinished(this, EventArgs.Empty); } }
protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); if (Control == null) { var webView = CreateNativeControl(); #pragma warning disable 618 // This can probably be replaced with LinearLayout(LayoutParams.MatchParent, LayoutParams.MatchParent); just need to test that theory webView.LayoutParameters = new global::Android.Widget.AbsoluteLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent, 0, 0); #pragma warning restore 618 _webViewClient = GetWebViewClient(); webView.SetWebViewClient(_webViewClient); _webChromeClient = GetFormsWebChromeClient(); _webChromeClient.SetContext(Context); webView.SetWebChromeClient(_webChromeClient); if(Context.IsDesignerContext()) { SetNativeControl(webView); return; } webView.Settings.JavaScriptEnabled = true; webView.Settings.DomStorageEnabled = true; SetNativeControl(webView); } if (e.OldElement != null) { var oldElementController = e.OldElement as IWebViewController; oldElementController.EvalRequested -= OnEvalRequested; oldElementController.EvaluateJavaScriptRequested -= OnEvaluateJavaScriptRequested; oldElementController.GoBackRequested -= OnGoBackRequested; oldElementController.GoForwardRequested -= OnGoForwardRequested; oldElementController.ReloadRequested -= OnReloadRequested; } if (e.NewElement != null) { var newElementController = e.NewElement as IWebViewController; newElementController.EvalRequested += OnEvalRequested; newElementController.EvaluateJavaScriptRequested += OnEvaluateJavaScriptRequested; newElementController.GoBackRequested += OnGoBackRequested; newElementController.GoForwardRequested += OnGoForwardRequested; newElementController.ReloadRequested += OnReloadRequested; UpdateMixedContentMode(); UpdateEnableZoomControls(); UpdateDisplayZoomControls(); } Load(); }
private void InitWebView() { _webView = _view.FindViewById <WebView> (Resource.Id.BaiduView); _webView.Settings.JavaScriptEnabled = true; _webViewClient = new BaseWebViewClient(); _webView.SetWebViewClient(_webViewClient); _webView.LoadUrl("http://www.baidu.com"); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); WebView web = FindViewById <WebView>(Resource.Id.webView); web.Settings.JavaScriptEnabled = true; web.SetWebViewClient(new WebViewClient()); WebViewClient client = new WebViewClient(); web.LoadUrl("https://tero.fund"); }
/// <summary> /// Called from the native webview when JavaScript evaluating is finished. /// </summary> private static void OnEvaluatingJavaScriptFinished(WebViewClient sender, string result) { GameObject webView = GameObject.Find(sender.Name); if (webView != null) { #if UNIWEBVIEW3_SUPPORTED result = "{\"data\":\"" + WWebViewSystem.EscapeJsonText(result) + "\",\"resultCode\":\"0\",\"identifier\":\"\"}"; #endif webView.SendMessage("EvalJavaScriptFinished", result, SendMessageOptions.DontRequireReceiver); } }
public MessagePageRenderer(Context context) : base(context) { webView = new MessageWebView(Context); webViewClient = new WebViewClient(this); var fl = new FrameLayout(Context); fl.LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent); fl.AddView(webView); webView.SetWebViewClient(webViewClient); AddView(fl); nativeView = fl; }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.webview); WebView webView = FindViewById <WebView>(Resource.Id.webView1); webView.Settings.JavaScriptEnabled = true; WebViewClient viewClient = new WebViewClient(); webView.SetWebViewClient(viewClient); viewClient.ShouldOverrideUrlLoading(webView, "file:///android_asset/payweb.html"); webView.Settings.DomStorageEnabled = true; webView.LoadUrl("file:///android_asset/payweb.html"); }
protected override void OnElementChanged(ElementChangedEventArgs <HybridWebView> e) { base.OnElementChanged(e); if (Control == null) { var webView = CreateNativeControl(); #pragma warning disable 618 // This can probably be replaced with LinearLayout(LayoutParams.MatchParent, LayoutParams.MatchParent); just need to test that theory webView.LayoutParameters = new global::Android.Widget.AbsoluteLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent, 0, 0); #pragma warning restore 618 _webViewClient = GetWebViewClient(); webView.SetWebViewClient(_webViewClient); _webChromeClient = GetFormsWebChromeClient(); _webChromeClient.SetContext(Context as Activity); webView.SetWebChromeClient(_webChromeClient); webView.AddJavascriptInterface(new WebViewBridge(this), "BloggerPro"); webView.Settings.JavaScriptEnabled = true; webView.Settings.DomStorageEnabled = false; SetNativeControl(webView); } if (e.OldElement != null) { var oldElementController = e.OldElement as IWebViewController; Control.RemoveJavascriptInterface("BloggerPro"); oldElementController.EvalRequested -= OnEvalRequested; oldElementController.EvaluateJavaScriptRequested -= OnEvaluateJavaScriptRequested; oldElementController.GoBackRequested -= OnGoBackRequested; oldElementController.GoForwardRequested -= OnGoForwardRequested; } if (e.NewElement != null) { var newElementController = e.NewElement as IWebViewController; newElementController.EvalRequested += OnEvalRequested; newElementController.EvaluateJavaScriptRequested += OnEvaluateJavaScriptRequested; newElementController.GoBackRequested += OnGoBackRequested; newElementController.GoForwardRequested += OnGoForwardRequested; UpdateMixedContentMode(); } Load(); }
/// <summary> /// Invoked when the navigation is failed. /// </summary> private static void OnNavigationFailed(WebViewClient sender, WebViewNavigationFailedEventArgs args) { GameObject webView = GameObject.Find(sender.Name); if (webView != null) { webView.SendMessage( #if UNIWEBVIEW3_SUPPORTED "PageErrorReceived", "{\"data\":\"" + WWebViewSystem.EscapeJsonText(args.Uri.ToString()) + "\",\"resultCode\":\"" + args.WebErrorStatus.ToString() + "\",\"identifier\":\"\"}", #else "LoadComplete", args.WebErrorStatus.ToString(), #endif SendMessageOptions.DontRequireReceiver); } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.WebView); var webView = FindViewById <WebView>(Resource.Id.webView); webView.Settings.JavaScriptEnabled = true; WebViewClient webViewClient = new WebViewClient(); webView.SetWebViewClient(webViewClient); Com.Citrix.Mvpn.Api.MicroVPNSDK.EnableWebViewObjectForNetworkTunnel(this, webView, webViewClient); string url = Intent.GetStringExtra("URL"); Log.Info(TAG, url); webView.LoadUrl(url); }
protected override void OnCreate(Bundle bundle) { Splat.Locator.CurrentMutable.Register(CreateTwitchCookieStore, typeof(ICookieStore)); TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; SetContentView(Resource.Layout.WebViewSilent); WebView silentWebView = FindViewById <WebView>(Resource.Id.WebViewSilent); WebViewClient client = new WebViewClient(); silentWebView.SetWebViewClient(new WebViewClient()); // stops request going to Web Browser //Splat.Locator.CurrentMutable.Register(); base.OnCreate(bundle); global::Xamarin.Forms.Forms.Init(this, bundle); LoadApplication(new App()); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); progressBar = FindViewById <ProgressBar>(Resource.Id.progressbar_login); progressBar.Max = 100; loginview = FindViewById <WebView>(Resource.Id.webview_login); loginview.Settings.SetSupportZoom(true); loginview.Settings.JavaScriptEnabled = true; loginview.Settings.BuiltInZoomControls = true; loginview.Settings.CacheMode = CacheModes.NoCache; WebViewClient webClient = new WebViewClient(); loginview.SetWebChromeClient(new LoginWebChromeClient(progressBar)); loginview.SetWebViewClient(new LoginGetCookieClient(this)); loginview.LoadUrl(Constant.CNBLOG_WEB_LOGIN); string url = string.Format(Constant.GetAuthrize, Constant.client_id); // Create your application here new Handler((message) => { }); }
//private static Context context => this; protected override void OnCreate(Bundle savedinstancestate) { base.OnCreate(savedinstancestate); StatusBarUtil.SetColorStatusBars(this); // create your application here // toolbar = findviewbyid<toolbar>(resource.id.toolbar); // toolbar.SetNavigationIcon(Resource.Drawable.back_24dp); //toolbar.Title = "怬"; progressBar = FindViewById <ProgressBar>(Resource.Id.progressBar_login); progressBar.Max = 100; loginview = FindViewById <WebView>(Resource.Id.webview_login); loginview.Settings.SetSupportZoom(true); loginview.Settings.JavaScriptEnabled = true; loginview.Settings.BuiltInZoomControls = true; loginview.Settings.CacheMode = CacheModes.NoCache; WebViewClient webClient = new WebViewClient(); loginview.SetWebChromeClient(new loginwebchromeclient(progressBar)); loginview.SetWebViewClient(new loginwebviewclient(this)); string url = string.Format(Constact.GetAuthrize, Constact.client_id); loginview.LoadUrl(url); }
public override void SetWebViewClient(WebViewClient client) { m_client = client; base.SetWebViewClient(client); }
private void initWebView() { //mProgressBar.setVisibility(View.VISIBLE); WebSettings ws = webView.Settings; // 网页内容的宽度是否可大于WebView控件的宽度 ws.LoadWithOverviewMode = false; // 保存表单数据 ws.SaveFormData = true; // 是否应该支持使用其屏幕缩放控件和手势缩放 ws.SetEnableSmoothTransition(true); ws.BuiltInZoomControls = true; ws.DisplayZoomControls = false; // 启动应用缓存 ws.SetAppCacheEnabled(true); // 设置缓存模式 //ws.setCacheMode(WebSettings.LOAD_DEFAULT); ws.CacheMode = CacheModes.Default; // setDefaultZoom api19被弃用 // 设置此属性,可任意比例缩放。 ws.UseWideViewPort = true; // 不缩放 webView.SetInitialScale(100); // 告诉WebView启用JavaScript执行。默认的是false。 ws.JavaScriptEnabled = true; // 页面加载好以后,再放开图片 ws.BlockNetworkImage = false; // 使用localStorage则必须打开 ws.DomStorageEnabled = true; // 排版适应屏幕 ws.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.NarrowColumns); // WebView是否新窗口打开(加了后可能打不开网页) ws.SetSupportMultipleWindows(true); // webview从5.0开始默认不允许混合模式,https中不能加载http资源,需要设置开启。 if (Build.VERSION.SdkInt >= Build.VERSION_CODES.Lollipop) { ws.MixedContentMode = WebSettings.MixedContentAlwaysAllow; } /** 设置字体默认缩放大小(改变网页字体大小,setTextSize api14被弃用)*/ ws.TextZoom = 100; mWebviewClient = new WebViewClient(); mWebChromeClient = new WebChromeClient(); webView.SetWebViewClient(mWebviewClient); // 与js交互 //webView.addJavascriptInterface(new ImageClickInterface(this), "injectedObject"); }
/// <summary> /// Occurs when the content contained in the webview passes a string to the application by using JavaScript. /// NOTE: To enable an external web page to fire the ScriptNotify event when calling window.external.notify, /// You must include the page's URI in the ApplicationContentUriRules section of the app manifest. /// You can do this in Visual Studio on the Content URIs tab of the Package.appxmanifest designer. /// The URIs in this list must use HTTPS and may contain subdomain wildcards (for example, "https://*.microsoft.com"), /// but they can't contain domain wildcards (for example, "https://*.com" and "https://*.*"). /// The manifest requirement does not apply to content that originates from the app package, /// uses an ms-local-stream:// URI, or is loaded using NavigateToString. /// </summary> private static void OnScriptNotify(WebViewClient sender, NotifyEventArgs args) { // REF: https://social.msdn.microsoft.com/Forums/vstudio/en-US/f322a505-87af-42a1-b196-1143011ba327/uwpc-script-notify-webview-not-working?forum=wpdevelop // REF: https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.notifyeventhandler // REF: https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Controls.WebView#Windows_UI_Xaml_Controls_WebView_AllowedScriptNotifyUris }
public override void SetWebViewClient(WebViewClient client) { hybridClient.BaseClient = client; }
public static void setWebViewClient(this WebView webView, WebViewClient client) { webView.SetWebViewClient(client); }