/// <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);
            }
        }
    }
Example #2
0
        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);
        }
Example #3
0
        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);
            }
        }
Example #4
0
		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");
        }
Example #6
0
        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;
        }
Example #9
0
        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");
        }
Example #10
0
        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);
        }
Example #13
0
        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());
        }
Example #14
0
        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) =>
            {
            });
        }
Example #15
0
        //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);
        }
Example #16
0
 public override void SetWebViewClient(WebViewClient client)
 {
     m_client = client;
     base.SetWebViewClient(client);
 }
Example #17
0
        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
 }
Example #19
0
 public override void SetWebViewClient(WebViewClient client)
 {
     hybridClient.BaseClient = client;
 }
Example #20
0
 public static void setWebViewClient(this WebView webView, WebViewClient client)
 {
     webView.SetWebViewClient(client);
 }