安卓內部應用開啟附件
阿新 • 來源:網路 • 發佈:2021-02-08
APP使用TBS開啟不同的附件
最近專案中加入了通知功能,裡面有附件的檢視操作,查看了一些資料後發現騰訊Tbs支援應用內部開啟附件,並且簡單方便,目前我只用到了幾種滿足自己需求的格式(例如doc、excel、ppt、excel、pdf等格式);
騰訊TBS官網,地址:https://x5.tencent.com/tbs/guide/sdkInit.html
首先下載TBS的sdk,按照需求把裡面的lib地下jar包拷貝到專案去,還有.so庫

然後配置gradle相容:

其中主要是用到了TbsReaderView這個控制元件;
public class SuperFileView extends FrameLayout implements TbsReaderView.ReaderCallback {
private static String TAG = "SuperFileView";
private TbsReaderView mTbsReaderView;
private int saveTime = -1;
private Context context;
public SuperFileView(Context context) {
this(context, null, 0);
}
public SuperFileView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public SuperFileView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mTbsReaderView = new TbsReaderView(context, this);
this.addView(mTbsReaderView, new LinearLayout.LayoutParams(-1, -1));
this.context = context;
}
private OnGetFilePathListener mOnGetFilePathListener;
public void setOnGetFilePathListener(OnGetFilePathListener mOnGetFilePathListener) {
this.mOnGetFilePathListener = mOnGetFilePathListener;
}
private TbsReaderView getTbsReaderView(Context context) {
return new TbsReaderView(context, this);
}
public void displayFile(File mFile) {
if (mFile != null && !TextUtils.isEmpty(mFile.toString())) {
//增加下面一句解決沒有TbsReaderTemp資料夾存在導致載入檔案失敗
String bsReaderTemp = "/storage/emulated/0/TbsReaderTemp";
File bsReaderTempFile =new File(bsReaderTemp);
if (!bsReaderTempFile.exists()) {
LogUtils.d("準備建立/storage/emulated/0/TbsReaderTemp!!");
boolean mkdir = bsReaderTempFile.mkdir();
if(!mkdir){
LogUtils.e("建立/storage/emulated/0/TbsReaderTemp失敗!!!!!");
}
}
//載入檔案
Bundle localBundle = new Bundle();
LogUtils.d(mFile.toString());
localBundle.putString("filePath", mFile.toString());
localBundle.putString("tempPath", Environment.getExternalStorageDirectory() + "/" + "TbsReaderTemp");
if (this.mTbsReaderView == null) {
this.mTbsReaderView = getTbsReaderView(context);
}
boolean bool = this.mTbsReaderView.preOpen(getFileType(mFile.toString()), false);
if (bool) {
this.mTbsReaderView.openFile(localBundle);
}
} else {
LogUtils.e("檔案路徑無效!");
}
}
/***
* 獲取檔案型別
*
* @param paramString
* @return
*/
private String getFileType(String paramString) {
String str = "";
if (TextUtils.isEmpty(paramString)) {
LogUtils.d(TAG, "paramString---->null");
return str;
}
LogUtils.d(TAG, "paramString:" + paramString);
int i = paramString.lastIndexOf('.');
if (i <= -1) {
LogUtils.d(TAG, "i <= -1");
return str;
}
str = paramString.substring(i + 1);
LogUtils.d(TAG, "paramString.substring(i + 1)------>" + str);
return str;
}
public void show() {
if(mOnGetFilePathListener!=null){
mOnGetFilePathListener.onGetFilePath(this);
}
}
/***
* 將獲取File路徑的工作,“外包”出去
*/
public interface OnGetFilePathListener {
void onGetFilePath(SuperFileView mSuperFileView2);
}
@Override
public void onCallBackAction(Integer integer, Object o, Object o1) {
LogUtils.e("****************************************************" + integer);
}
public void onStopDisplay() {
if (mTbsReaderView != null) {
mTbsReaderView.onStop();
}
}
}
其他的看程式碼吧,哈哈哈—>
專案地址:https://github.com/zhangshaopeng/Tbs
