腾讯X5webview集成
生活随笔
收集整理的這篇文章主要介紹了
腾讯X5webview集成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:在application中初始化:
private void initX5() {//搜集本地tbs內核信息并上報服務器,服務器返回結果決定使用哪個內核。QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {//x5內核初始化完成的回調,為true表示x5內核加載成功,否則表示x5內核加載失敗,會自動切換到系統內核。// Log.d("app", " onViewInitFinished is " + arg0);}@Overridepublic void onCoreInitFinished() {// Log.d(("X5內核初始化完成");}};QbSdk.setTbsListener(new TbsListener() {@Overridepublic void onDownloadFinish(int i) {}@Overridepublic void onInstallFinish(int i) {}@Overridepublic void onDownloadProgress(int i) {}});//x5內核初始化接口QbSdk.initX5Environment(getApplicationContext(), cb);
}
2:繼承extends com.tencent.smtt.sdk.WebView自定義webview
package com.ebid.tendering.widget;import android.annotation.SuppressLint; import android.content.Context; import android.os.Build; import android.util.AttributeSet;import com.tencent.smtt.sdk.WebSettings; import com.tencent.smtt.sdk.WebView; import com.tencent.smtt.sdk.WebViewClient;public class MyWebView extends com.tencent.smtt.sdk.WebView {private com.tencent.smtt.sdk.WebViewClient client = new WebViewClient() {/*** 防止加載網頁時調起系統瀏覽器*/public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}};@SuppressLint("SetJavaScriptEnabled")public MyWebView(Context arg0, AttributeSet arg1) {super(arg0, arg1);this.setWebViewClient(client);// this.setWebChromeClient(chromeClient);// WebStorage webStorage = WebStorage.getInstance();initWebViewSetting(arg0,this);}public static void initWebViewSetting(Context context, WebView webView) {if (webView == null) {return;}WebSettings webSettings = webView.getSettings();webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);//允許混合內容 解決部分手機 加載不出https請求里面的http下的圖片if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {webSettings.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);}//設置自適應屏幕,兩者合用webSettings.setJavaScriptEnabled(true);//啟用數據庫webSettings.setDatabaseEnabled(true);String dbPath = context.getApplicationContext().getDir("db",Context.MODE_PRIVATE).getPath();webSettings.setDatabasePath(dbPath);webSettings.setDefaultTextEncodingName("UTF-8");//設置定位的數據庫路徑 // String dir = context.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); // webSettings.setGeolocationDatabasePath(dir);//啟用地理定位 // webSettings.setGeolocationEnabled(true);//開啟DomStorage緩存webSettings.setDomStorageEnabled(true);webSettings.setLoadsImagesAutomatically(true);webSettings.setUseWideViewPort(true); //將圖片調整到適合webview的大小webSettings.setLoadWithOverviewMode(true); // 縮放至屏幕的大小webSettings.setAllowFileAccess(true); // 允許訪問文件webSettings.setSupportZoom(false); // 支持縮放webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);String ua = webSettings.getUserAgentString();// webSettings.setBlockNetworkImage(true);}// Log.d( }3:webactivity展示信息定制內容
public class WebActivity extends BaseActivity<WebInteractionContrat.IPresenter> implements WebInteractionContrat.IView, TitleBar.OnTitleBarClickListener {@BindView(R.id.mTitleBar)TitleBar mTitleBar;@BindView(R.id.web_view)MyWebView mWebView;@BindView(R.id.progress_bar)ProgressBar progressBar;private String mUrl;private String mTitle;private String userId;private String appId;@Overrideprotected void initPresenter() {mPresenter=new WebInteractionPresenter(activity,this);}@Overrideprotected int getLayoutId() {return R.layout.activity_web;}@Overrideprotected void initView() {super.initView();int statusBarHeight = StatusBarUtil.getStatusBarHeight(activity);mTitleBar.setViewheight(statusBarHeight);mTitleBar.setTitleBarClick(this);}@Overridepublic void initData() {initWebData();mTitle = getIntent().getStringExtra("title");mUrl = getIntent().getStringExtra("url");mTitleBar.setTitle(mTitle);mWebView.loadUrl(mUrl);}@Overridepublic void onLeftClick() {if (mWebView.canGoBack()) {mWebView.goBack();} else {finish();}}@Overridepublic void onRightClick() {}/*** 登錄成功后,初始化網頁*/private void initWebData() {mWebView.getSettings().setJavaScriptEnabled(true);mWebView.setWebContentsDebuggingEnabled(true);mWebView.addJavascriptInterface(new JavaScriptInterface(), "ChinaBidding");mWebView.setWebViewClient(new WebViewClient() {@Overridepublic void onPageFinished(WebView webView, String s) {progressBar.setVisibility(View.GONE);}@Overridepublic void onReceivedError(WebView webView, int i, String s, String s1) {super.onReceivedError(webView, i, s, s1);}});}class JavaScriptInterface {JavaScriptInterface() {}/*** js調原生 --- 通知,保存支付結果信息*/@JavascriptInterfacepublic void onSavePayRecordInfo(String goodsName, String userId, String platformCode, String payWay, double amount,String mcOrderNo, String payOrderNo, String goodsId, String goodsType, String payStatus) {mPresenter.savePayRecordInfo(goodsName, userId, platformCode, payWay, amount, mcOrderNo, payOrderNo, goodsId, goodsType, payStatus);}/*** js調原生 --- 通知,保存服務消息信息*/@JavascriptInterfacepublic void onSaveServiceMsgInfo(String userId, String msgUrl, String msgName, String msgDetail, String msgIcon,String msgType, String msgTitle, String msgComefrom, String isNowSend, String isLink) {mPresenter.saveServiceMsgInfo(userId, msgUrl, msgName, msgDetail, msgIcon, msgType, msgTitle, msgComefrom, isNowSend, isLink);}/*** js調原生 --- 應用授權登錄*/@JavascriptInterfacepublic void onAuthAppLogin() {mPresenter.authAppLogin(userId, appId);}/*** js調原生 --- 根據應用的權限,獲取用戶基本信息*/@JavascriptInterfacepublic void onUserInfoByAppAuthType(String openId, String authType) {mPresenter.getUserInfoByAppAuthType(userId, openId, appId, authType);}}@Overridepublic void vsavePayRecordInfo(WebInteractionBean body, String state) {if ("0".equals(state)) {if (body.header.returnCode.equals("0")) {ToastUtil.show(context, body.header.msg);} else {ToastUtil.show(context, body.header.msg);}} else {ToastUtil.show(context, R.string.please_service_exception);}}@Overridepublic void vsaveServiceMsgInfo(WebInteractionBean body, String state) {if ("0".equals(state)) {if (body.header.returnCode.equals("0")) {ToastUtil.show(context, body.header.msg);} else {ToastUtil.show(context, body.header.msg);}} else {ToastUtil.show(context, R.string.please_service_exception);}}@Overridepublic void vgetUserInfoByAppAuthType(WebInteractionBean body, String state) {if ("0".equals(state)) {if (body.header.returnCode.equals("0")) {String userInfo = body.data.userInfo;//將 授權信息 傳給 網頁端mWebView.loadUrl("javascript:userInfoByAppAuthTypeResult(" + userInfo + ")");} else {ToastUtil.show(context, body.header.msg);}} else {ToastUtil.show(context, R.string.please_service_exception);}}@Overridepublic void vauthAppLogin(WebInteractionBean body, String state) {if ("0".equals(state)) {if (body.header.returnCode.equals("0")) {String openId = body.data.openId;//將 openId 傳給 網頁端mWebView.loadUrl("javascript:authAppLoginResult(" + openId + ")");} else {ToastUtil.show(context, body.header.msg);}} else {ToastUtil.show(context, R.string.please_service_exception);}}private void showAuthDialog(){AuthDialog authDialog =new AuthDialog(WebActivity.this);authDialog.show();}}總結
以上是生活随笔為你收集整理的腾讯X5webview集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MT6763芯片资料MT6763处理器性
- 下一篇: Matlab伯德图如何修改相频特性的角度