protected override void OnPause() { base.OnPause(); var webViewContainer = this.Window.DecorView.FindViewById <RelativeLayout>(Resource.Id.webViewContainer); X5WebViewHelper.AttachedWebView(WebViewKey, webViewContainer); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); RequestWindowFeature(WindowFeatures.NoTitle); SetContentView(Resource.Layout.CommonActivityVw); var paramString = this.Intent.GetStringExtra("OpenPageParam"); var pageParam = JsonConvert.DeserializeObject <PageParam>(paramString); var parentPageAttributes = AnalyticAgreement.PageParam[pageParam.ParentPageId]; if (parentPageAttributes != null) { pageParam.ParentPageUrl = parentPageAttributes.PageUrl; pageParam.ParentWebViewKey = parentPageAttributes.WebViewKey; } PageId = pageParam.PageId; ParentPageId = pageParam.ParentPageId; PageUrl = pageParam.PageUrl; ParentPageUrl = pageParam.ParentPageUrl; if (AnalyticAgreement.PageParam.ContainsKey(PageId)) { AnalyticAgreement.PageParam[PageId] = pageParam; } else { AnalyticAgreement.PageParam.Add(PageId, pageParam); } if (X5WebViewHelper.PageActivity.ContainsKey(PageId)) { X5WebViewHelper.PageActivity[PageId] = this; } else { X5WebViewHelper.PageActivity.Add(PageId, this); } pageParam.WebViewKey = X5WebViewHelper.WebViewInit(PageId); WebViewKey = pageParam.WebViewKey; ParentWebViewKey = pageParam.ParentWebViewKey; //var router = "{ path: '"+ pageParam.PageUrl + "', params: { PageId: '"+ PageId + "' }}"; if (string.IsNullOrWhiteSpace(pageParam.OpenParam)) { pageParam.OpenParam = ""; } pageParam.OpenParam = pageParam.OpenParam.Replace("'", "```").Replace("\"", "~~~"); var router = pageParam.PageUrl + "/" + pageParam.OpenParam; AnalyticAgreement.AgreementProvider.ExecuteJavaScript(PageId, $@"window.AppBridge.Router.push(""{router}"")"); AnalyticAgreement.AgreementProvider.ExecuteJavaScript(PageId, $@"window.AppBridge.SetPageId(""{pageParam.ParentPageId}"",""{pageParam.PageId}"")"); if (pageParam.IsHideNavBar) { var rlTitle = this.Window.DecorView.FindViewById <RelativeLayout>(Resource.Id.rlTitle); rlTitle.Visibility = ViewStates.Gone; } else { var barTableTextView = FindViewById <TextView>(Resource.Id.BarTitle); barTableTextView.Text = pageParam.PageName; var btnReturn = FindViewById <LinearLayout>(Resource.Id.btnReturn); btnReturn.Visibility = ViewStates.Visible; btnReturn.Click += (sender, args) => { PageBack(); }; if (!pageParam.AllowBack) { //���ط��ذ�ť btnReturn.Visibility = ViewStates.Gone; } var btnRight = FindViewById <LinearLayout>(Resource.Id.btnRight); if (pageParam.AllowRightBtn && pageParam.RightBtnParam != null && !string.IsNullOrWhiteSpace(pageParam.RightBtnParam.BtnTitle) && pageParam.RightBtnParam.CallBackAction != null) { var txtRight = FindViewById <TextView>(Resource.Id.txtRight); txtRight.Text = pageParam.RightBtnParam.BtnTitle; btnRight.Click += (sender, args) => { pageParam.RightBtnParam.CallBackAction(sender, args); AnalyticAgreement.AgreementProvider.OnRightBtn(PageId); }; } else { btnRight.Visibility = ViewStates.Gone; } } }
public static string WebViewInit(string pageId) { if (WebViewAssets == null) { WebViewAssets = new Dictionary <string, X5WebViewHelper>(); } if (AnalyticAgreement.PageParam[pageId].IsRelative && WebViewAssets.ContainsKey(AnalyticAgreement.PageParam[pageId].ParentWebViewKey)) { AnalyticAgreement.PageParam[pageId].WebViewKey = AnalyticAgreement.PageParam[pageId].ParentWebViewKey; AnalyticAgreement.PageParam[pageId].IsLoadFinished = AnalyticAgreement.PageParam[AnalyticAgreement.PageParam[pageId].ParentPageId].IsLoadFinished; return(AnalyticAgreement.PageParam[pageId].WebViewKey); } if (string.IsNullOrWhiteSpace(AnalyticAgreement.PageParam[pageId].WebViewKey) || !WebViewAssets.ContainsKey(AnalyticAgreement.PageParam[pageId].WebViewKey)) { var x5WebView = new X5WebViewHelper(MainActivity.thisActivity.Application.ApplicationContext); if (string.IsNullOrWhiteSpace(AnalyticAgreement.PageParam[pageId].WebViewKey)) { AnalyticAgreement.PageParam[pageId].WebViewKey = GetRandomString(); } WebViewAssets.Add(AnalyticAgreement.PageParam[pageId].WebViewKey, x5WebView); } WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].ScrollBarStyle = ScrollbarStyles.InsideOverlay; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].VerticalScrollBarEnabled = false; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].HorizontalScrollBarEnabled = false; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.JavaScriptEnabled = true; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.UseWideViewPort = true; //缓存模式 WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.DomStorageEnabled = true; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetAppCacheMaxSize(1024 * 1024 * 8);//设置缓冲大小,我设的是8M string appCacheDir = MainActivity.thisActivity.GetDir("appcache", FileCreationMode.Private).Path; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetAppCachePath(appCacheDir); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetAppCacheEnabled(true); string appDatabaseDir = MainActivity.thisActivity.GetDir("databases", FileCreationMode.Private).Path; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.DatabasePath = appDatabaseDir; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.DatabaseEnabled = true; string appGeolocationDir = MainActivity.thisActivity.GetDir("geolocation", FileCreationMode.Private).Path; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetGeolocationDatabasePath(appGeolocationDir); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetGeolocationEnabled(true); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.AllowContentAccess = true; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.AllowFileAccess = true; //网页自适应 WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.SingleColumn); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.LoadWithOverviewMode = true; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.DefaultTextEncodingName = "utf-8"; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].SetWebViewClient(new ExtWebViewClient()); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].SetWebChromeClient(new ExtWebChromeClient()); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetLayoutAlgorithm(WebSettings.LayoutAlgorithm.NarrowColumns); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetSupportZoom(false); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].Settings.SetSupportMultipleWindows(false); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].SetDownloadListener(new DownloadListener()); WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].SetOnLongClickListener(WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey]); var hostUrl = HybridCommon.Config.HtmlServerHost + "/index.html#/Empty/" + pageId; //var hostUrl = "file:///" + DeviceInfo.HtmlFolder + "/index.html#/Empty/" + pageId; WebViewAssets[AnalyticAgreement.PageParam[pageId].WebViewKey].LoadUrl(hostUrl); CookieSyncManager.CreateInstance(MainActivity.thisActivity.Application.ApplicationContext); CookieSyncManager.Instance.Sync(); return(AnalyticAgreement.PageParam[pageId].WebViewKey); }