安卓內部應用開啟附件
阿新 • • 發佈: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