解決原生webView無法載入部分格式視訊的問題
阿新 • • 發佈:2019-01-10
關於如何整合方面,雖然X5官網 有接入指南,但個人感覺某些方面不是很詳細,所以我就總結一下自己的整合步驟:
1、首先在官網下載官方demo ,在手機上執行看看能否滿足自己的需求?如果不能滿足的話,我還知道有另一個專案,可以試試:Crosswalk ;
2、仍然在X5官網,註冊開發者帳號,在開發者後臺申請APPkey,配置到自己的專案中;
## 第一步 ##
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
## 第二步 ##在X5官網,註冊開發者帳號,在開發者後臺申請APPkey,配置到自己專案的AndroidManifest.xml中;
//x5web
<meta-data
android:name="QBSDKAppKey"
android:value="申請的key"/>
## 第三步 ##
在Application中進行一些初始化
//-----------------------騰訊X5核心的整合 QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { @Override public void onViewInitFinished(boolean arg0) { // TODO Auto-generated method stub } @Override public void onCoreInitFinished() { // TODO Auto-generated method stub } }; QbSdk.setTbsListener(new TbsListener() { @Override public void onDownloadFinish(int i) { } @Override public void onInstallFinish(int i) { } @Override public void onDownloadProgress(int i) { } }); QbSdk.allowThirdPartyAppDownload(true); QbSdk.initX5Environment(getApplicationContext(), QbSdk.WebviewInitType.FIRSTUSE_AND_PRELOAD, cb);
## 第四步 ##webViewSetting 設定
private void initWebView(String url) { // TODO Auto-generated method stub WebSettings webSetting = information_webview.getSettings(); webSetting.setAllowFileAccess(true); webSetting.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); webSetting.setSupportZoom(true); webSetting.setBuiltInZoomControls(true); webSetting.setUseWideViewPort(true); webSetting.setSupportMultipleWindows(false); //webSetting.setLoadWithOverviewMode(true); webSetting.setAppCacheEnabled(true); //webSetting.setDatabaseEnabled(true); webSetting.setDomStorageEnabled(true); webSetting.setJavaScriptEnabled(true); webSetting.setGeolocationEnabled(true); webSetting.setAppCacheMaxSize(Long.MAX_VALUE); webSetting.setAppCachePath(this.getDir("appcache", 0).getPath()); webSetting.setDatabasePath(this.getDir("databases", 0).getPath()); webSetting.setGeolocationDatabasePath(this.getDir("geolocation", 0) .getPath()); // webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY); webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND); Log.e("dd", url); /* * 用WebView顯示圖片,可使用這個引數 設定網頁佈局型別: 1、LayoutAlgorithm.NARROW_COLUMNS : * 適應內容大小 2、LayoutAlgorithm.SINGLE_COLUMN:適應螢幕,內容將自動縮放 */ // webSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); // 設定支援縮放 // 載入需要顯示的網頁 // 這裡吐槽一下這J8網站 寫你妹的排隊,排你大爺 information_webview.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // TODO Auto-generated method stub super.onPageFinished(view, url); // 頁面下載完畢,卻不代表頁面渲染完畢顯示出來 // WebChromeClient中progress==100時也是一樣 progressBar.setVisibility(View.GONE); findViewById(R.id.title_divide).setVisibility(View.VISIBLE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub // 自身載入新連結,不做外部跳轉 view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // TODO Auto-generated method stub view.reload(); progressBar.setVisibility(View.GONE); findViewById(R.id.title_divide).setVisibility(View.VISIBLE); super.onReceivedError(view, errorCode, description, failingUrl); } }); information_webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { // TODO Auto-generated method stub super.onProgressChanged(view, newProgress); progressBar.setProgress(newProgress); progressBar.postInvalidate(); if(newProgress == 100){ progressBar.setVisibility(View.GONE); findViewById(R.id.title_divide).setVisibility(View.VISIBLE); } } @Override public void onReceivedTitle(WebView view, String title) { if(!TextUtils.isEmpty(title)){ if (title.length() > 14){ titleTv.setText(title.subSequence(0, 14) + "..."); }else{ titleTv.setText(title); } } } }); information_webview.loadUrl(url); }
## 第五步 ##
開啟硬體加速
<activity
android:name="com.youmei.StampApp.activity.GuanggaoDetailsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTask"
android:hardwareAccelerated='true'
android:screenOrientation="portrait" >
</activity>
## 第六步 ##
記得去官網替換jar包,以及相關的webView類,都是用騰訊的代替原生的
可以去官網看相關設定、、、 http://x5.tencent.com/doc?id=1004