腾讯X5webview集成
生活随笔
收集整理的這篇文章主要介紹了
腾讯X5webview集成
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1:在application中初始化:
private void initX5() {//搜集本地tbs內(nèi)核信息并上報(bào)服務(wù)器,服務(wù)器返回結(jié)果決定使用哪個(gè)內(nèi)核。QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {//x5內(nèi)核初始化完成的回調(diào),為true表示x5內(nèi)核加載成功,否則表示x5內(nèi)核加載失敗,會(huì)自動(dòng)切換到系統(tǒng)內(nèi)核。// Log.d("app", " onViewInitFinished is " + arg0);}@Overridepublic void onCoreInitFinished() {// Log.d(("X5內(nèi)核初始化完成");}};QbSdk.setTbsListener(new TbsListener() {@Overridepublic void onDownloadFinish(int i) {}@Overridepublic void onInstallFinish(int i) {}@Overridepublic void onDownloadProgress(int i) {}});//x5內(nèi)核初始化接口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() {/*** 防止加載網(wǎng)頁時(shí)調(diào)起系統(tǒng)瀏覽器*/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);//允許混合內(nèi)容 解決部分手機(jī) 加載不出https請(qǐng)求里面的http下的圖片if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {webSettings.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);}//設(shè)置自適應(yīng)屏幕,兩者合用webSettings.setJavaScriptEnabled(true);//啟用數(shù)據(jù)庫webSettings.setDatabaseEnabled(true);String dbPath = context.getApplicationContext().getDir("db",Context.MODE_PRIVATE).getPath();webSettings.setDatabasePath(dbPath);webSettings.setDefaultTextEncodingName("UTF-8");//設(shè)置定位的數(shù)據(jù)庫路徑 // 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); //將圖片調(diào)整到適合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展示信息定制內(nèi)容
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() {}/*** 登錄成功后,初始化網(wǎng)頁*/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調(diào)原生 --- 通知,保存支付結(jié)果信息*/@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調(diào)原生 --- 通知,保存服務(wù)消息信息*/@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調(diào)原生 --- 應(yīng)用授權(quán)登錄*/@JavascriptInterfacepublic void onAuthAppLogin() {mPresenter.authAppLogin(userId, appId);}/*** js調(diào)原生 --- 根據(jù)應(yīng)用的權(quán)限,獲取用戶基本信息*/@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;//將 授權(quán)信息 傳給 網(wǎng)頁端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 傳給 網(wǎng)頁端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();}}總結(jié)
以上是生活随笔為你收集整理的腾讯X5webview集成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MT6763芯片资料MT6763处理器性
- 下一篇: Matlab伯德图如何修改相频特性的角度