- 到騰訊瀏覽服務(wù)官網(wǎng)下載SDK,復(fù)制到libs下并Add As Library,同時復(fù)制demo里面的jniLibs文件夾到相應(yīng)位置,具體操作:
1.如果使用是Eclipse則需要將所有的.so文件都放置在so加載目錄:lib/armeabi文件夾下(沒有該目錄則新建一個,AP中沒有使用到.so文件則需要拷貝任意一個32位的so文件到該目錄下,如果沒有合適的so可以到官網(wǎng)http://x5.tencent.com/tbs/sdk.html下載官網(wǎng)“SDK接入示例“,拷貝對應(yīng)目錄下的liblbs.so文件)菇绵,lib文件夾下不要有其他以”armeabi“開頭的文件夾。
2.如果使用的是 Android studio則需要進行兩項配置,
(1)打開對應(yīng)module中的build.gradle文件,在文件的android{}中的defaultConfig{}里(如果沒有defaultConfig{}則手動添加)添加如下配置: ndk{abiFilters "armeabi"}樊诺,如果配置后編譯報錯,那么需要在gradle.properties文件中加上Android.useDeprecatedNdk=true音同;
(2)找出build.gradle中配置的so加載目錄:jniLibs.srcDir:customerDir,如果沒有該項配置則so加載目錄默認(rèn)為:src/main/jniLibs词爬,需要將.so文件都放置在so加載目錄的armeabi文件夾下(沒有該目錄則新建一個,AP中沒有使用到.so文件則需要拷貝任意一個32位的so文件到該目錄下权均,如果沒有合適的so可以到官網(wǎng)http://x5.tencent.com/tbs/sdk.html下載官網(wǎng)“SDK接入示例“,拷貝對應(yīng)目錄下的liblbs.so文件)顿膨,so加載目錄下不要有其他以”armeabi“開頭的文件夾。
可參考論壇回復(fù):http://bbs.mb.qq.com/thread-1473368-1-1.html .如果仍未能解決您的問題叽赊,請直接在論壇回復(fù)并描述您的問題
添加權(quán)限:
<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" />
- MainActivity:
import android.app.Activity;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.tencent.smtt.export.external.interfaces.IX5WebChromeClient;
import com.tencent.smtt.export.external.interfaces.JsResult;
import com.tencent.smtt.sdk.QbSdk;
import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;
import java.util.ArrayList;
public class MainActivity extends Activity {
private com.tencent.smtt.sdk.WebView mWebView;
private WebViewClient client = new WebViewClient() {
/**
* 防止加載網(wǎng)頁時調(diào)起系統(tǒng)瀏覽器
*/
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
};
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.file_layout);
mWebView = (com.tencent.smtt.sdk.WebView) findViewById(R.id.web_file);
//一些初始化配置
initWebViewSettings();
// 播放視頻
Bundle data = new Bundle();
data.putBoolean("standardFullScreen", false);
data.putBoolean("supportLiteWnd", true);
data.putInt("DefaultVideoScreen", 1);
mWebView.getX5WebViewExtension().invokeMiscMethod("setVideoParams", data);
mWebView.loadUrl("http://xxxxxx");
mWebView.getView().setClickable(true);
mWebView.setWebViewClient(client);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
});
//
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsConfirm(WebView arg0, String arg1, String arg2,
JsResult arg3) {
return super.onJsConfirm(arg0, arg1, arg2, arg3);
}
View myVideoView;
View myNormalView;
IX5WebChromeClient.CustomViewCallback callback;
/**
* 全屏播放配置
*/
@Override
public void onShowCustomView(View view,
IX5WebChromeClient.CustomViewCallback customViewCallback) {
FrameLayout normalView = (FrameLayout) findViewById(R.id.frame_web_video);
ViewGroup viewGroup = (ViewGroup) normalView.getParent();
viewGroup.removeView(normalView);
viewGroup.addView(view, new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.FILL_PARENT,
FrameLayout.LayoutParams.FILL_PARENT));
myVideoView = view;
myNormalView = normalView;
callback = customViewCallback;
}
//
@Override
public void onHideCustomView() {
if (callback != null) {
callback.onCustomViewHidden();
callback = null;
}
if (myVideoView != null) {
ViewGroup viewGroup = (ViewGroup) myVideoView.getParent();
viewGroup.removeView(myVideoView);
viewGroup.addView(myNormalView);
}
}
//
@Override
public boolean onJsAlert(WebView arg0, String arg1, String arg2,
JsResult arg3) {
/**
* 這里寫入你自定義的window alert
*/
return super.onJsAlert(null, arg1, arg2, arg3);
}
});
//
// 去除QQ瀏覽器推廣
getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
ArrayList<View> outView = new ArrayList<View>();
getWindow().getDecorView().findViewsWithText(outView, "QQ瀏覽器", View.FIND_VIEWS_WITH_TEXT);
int size = outView.size();
if (outView != null && outView.size() > 0) {
outView.get(0).setVisibility(View.GONE);
}
}
});
}
private void initWebViewSettings() {
WebSettings webSetting = mWebView.getSettings();
webSetting.setAllowFileAccess(true);
webSetting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webSetting.setSupportZoom(true);
webSetting.setBuiltInZoomControls(true);
webSetting.setUseWideViewPort(true);
webSetting.setLoadWithOverviewMode(true);
webSetting.setSupportMultipleWindows(false);
webSetting.setAppCacheEnabled(true);
// webSetting.setDatabaseEnabled(true);
webSetting.setDomStorageEnabled(true);
webSetting.setJavaScriptEnabled(true);
webSetting.setGeolocationEnabled(true);
webSetting.setAppCacheMaxSize(Long.MAX_VALUE);
// webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
webSetting.setJavaScriptCanOpenWindowsAutomatically(true);
webSetting.setCacheMode(WebSettings.LOAD_NO_CACHE);
}
//
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mWebView != null && mWebView.canGoBack()) {
mWebView.goBack();
return true;
} else
return super.onKeyDown(keyCode, event);
}
return super.onKeyDown(keyCode, event);
}
//
@Override
protected void onDestroy() {
if (mWebView != null)
mWebView.destroy();
super.onDestroy();
}
//
}
- Laout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frame_web_video"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.tencent.smtt.sdk.WebView
android:id="@+id/web_file"
android:layout_width="fill_parent"
android:layout_height="match_parent">
</com.tencent.smtt.sdk.WebView>
</RelativeLayout>
- Manifest:
android:name="com.xxx.MainActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"
android:configChanges="orientation|screenSize|keyboardHidden"
tools:targetApi="ice_cream_sandwich" /> ```