Android开发腾讯TBS浏览服务的使⽤,office⽂档的预览
⽇常的项⽬中,我们偶尔会遇到⽂件的预览,例如PPT、WORD、EXCEL、TXT、PDF等。
1. 我们可以使⽤判断系统中的应⽤,到可以打开相应⽂件的应⽤。
2. 还有我最常⽤的检测系统中是否有WPS office,不存在就提醒⽤户去下载WPS office,存在就打开。
3. 马上要说的腾讯提供的TBS浏览服务。
如果仅仅是PDF的预览,github上有作者提供了⼀个PDF的预览框架。不⽀持在线预览,需要先将⽂件从服务器下载保存。==》 ,需要的可以去看看。
调⽤WPS office预览office
如果想使⽤WPS office进⾏office⽂档的预览,可以参考如下两个博客。
1、
2、
解决导⼊第三⽅包报错,包没到的问题,在你项⽬所在的project的ale
dependencies {
classpath 'ls.build:gradle:3.1.2'
//解决导⼊第三⽅包报错,包没到的问题
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
classpath 'com.adle:gradle-bintray-plugin:1.7.3'
}
贴⼀个检测⼿机中是否存在某个应⽤的⽅法
/**
* 判断是否安装了某个应⽤
* @param context
* @param appPackageName
* @return true 安装 false 未安装
*/
public static boolean isApplicationAvilible(Context context, String appPackageName) {
// 获取packagemanager
PackageManager packageManager = PackageManager();
// 获取所有已安装程序的包信息
List<PackageInfo> pinfo = InstalledPackages(0);
if(!pinfo.isEmpty()){
for (int i = 0; i < pinfo.size(); i++) {
String name = (i).packageName;
if(appPackageName.equals(name)){
return true;
}
}
}
/*if (pinfo != null) {
for (int i = 0; i < pinfo.size(); i++) {
String pn = (i).packageName;
if (appPackageName.equals(pn)) {
return true;
}
}
}*/
return false;
}
不扯⽪了,还是讲讲如何使⽤腾讯的TBS的使⽤,webview和⽂件预览
1.
2.
3.
1、接⼊TBS
下载TBS的SDK
然后在app module中src==》main包下创建jniLibs⽂件夹,然后将TBS的demo中jniLibs中的⽂件复制到这个⽂件夹中。准备⼯作就做好
了。
2、然后在APPlication 中初始化腾讯的X5内核
3、然后直接参考demo 的写法,使⽤TBS 浏览服务加载⽹页,⽐如我们平常遇到的需要加载某些新闻页⾯或者富⽂本。我们在使⽤腾讯TBS的WebView的情况下,在整个应⽤中不能出现系统的WebView,好像有冲突。
public  class  APPAplication  extends  Application  {
@Override
public  void  onCreate () {
super .onCreate();
//x5内核初始化接⼝
QbSdk.initX5Environment(getApplicationContext(),  cb);
}
/**
* 搜集本地tbs 内核信息并上报服务器,服务器返回结果决定使⽤哪个内核。
*/
QbSdk.PreInitCallback cb = new  QbSdk.PreInitCallback() {
@Override
安卓intent用法public  void  onViewInitFinished (boolean  arg0) {
//x5內核初始化完成的回调,为true 表⽰x5内核加载成功,否则表⽰x5内核加载失败,会⾃动切换到系统内核。
Log.e("APPAplication", " onViewInitFinished is " + arg0);
}
@Override
public  void  onCoreInitFinished () {
Log.e("APPAplication", " onCoreInitFinished");
}
};}
public class Main3Activity extends AppCompatActivity {
@BindView(R.id.wb_content)
X5WebView wbContent;
@BindView(R.id.progress)
ProgressBar progress;
@BindView(R.id.bt_back)
Button btBack;
@BindView(R.id.tv_title)
TextView tvTitle;
private Unbinder unbinder;
private String mHomeUrl = "www.baidu/?tn=39042058_30_oem_dg";
//private String mHomeUrl = "www.panda.tv/";
//private String mHomeUrl = "www.vip/";
private URL mIntentUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFormat(PixelFormat.TRANSLUCENT);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
}
} catch (Exception e) {
e.printStackTrace();
}
Intent intent = getIntent();
if (intent != null) {
try {
mIntentUrl = new Data().toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
setContentView(R.layout.activity_main3);
unbinder = ButterKnife.bind(this);
initWeb();
btBack.setOnClickListener(onClickListener);
}
private void initWeb() {
WebSettings webSetting = Settings();
webSetting.setAllowFileAccess(true);
webSetting.setLayoutAlgorithm(WebSettings.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.Dir("appcache", 0).getPath());
webSetting.Dir("appcache", 0).getPath());
webSetting.Dir("databases", 0).getPath());
webSetting.Dir("geolocation", 0)
.getPath());
// webSetting.setPageCacheCapacity(IX5WebSettings.DEFAULT_CACHE_CAPACITY);
webSetting.setPluginState(WebSettings.PluginState.ON_DEMAND);
// webSetting.setRenderPriority(WebSettings.RenderPriority.HIGH);
// webSetting.setPreFectch(true);
wbContent.setWebViewClient(webViewClient);
wbContent.setWebChromeClient(webChromeClient);
if (mIntentUrl == null) {
wbContent.loadUrl(mHomeUrl);
} else {
wbContent.String());
}
}
WebViewClient webViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
//此处不能像使⽤系统的WebView的写法⼀样,强⾏显⽰在WebView中,不调⽤系统浏览器
//要参考demo中BrowserActivity中这⾥的写法,直接返回false,否则会出现⽹页中某得页⾯加载不出来的情况,别问我为什么知道,^_^,踩过坑。
/*if (!TextUtils.isEmpty(url)) {
webView.loadUrl(url);
}
return super.shouldOverrideUrlLoading(webView, url);*/
return false;
}
@Override
public void onPageFinished(WebView webView, String s) {
}
};
WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public void onProgressChanged(WebView webView, int i) {
try {
progress.setProgress(i);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onReceivedTitle(WebView webView, String s) {
tvTitle.setText(s);
}
@Override
public boolean onJsConfirm(WebView webView, String s, String s1, JsResult jsResult) {
JsConfirm(webView, s, s1, jsResult);
}
};
View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。