Android 基于x5Webview 浏览文件 office文档
生活随笔
收集整理的這篇文章主要介紹了
Android 基于x5Webview 浏览文件 office文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
此功能基于騰訊TBS 的X5Webview 實現
先上圖
?
第一步:下載jar包添加到項目
?下載地址?騰訊瀏覽服務-SDK下載 (tencent.com)?集成看下官方文檔
開發時候 測試機Android11 需要先申請11 特殊權限
我在MainActivity里申請的Android 11 文件權限
public void checkPermissions() {//申請Android11特殊權限requestManagerPermission();}private void requestManagerPermission() {//當系統在11及以上if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {// 沒文件管理權限時申請權限if (!Environment.isExternalStorageManager()) {Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);intent.setData(Uri.parse("package:" + getPackageName()));startActivityForResult(intent, 100);}else {Intent intent = new Intent(this,WebActivity.class);startActivity(intent);}}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == 100 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//用戶拒絕權限,重新申請if (!Environment.isExternalStorageManager()) {requestManagerPermission();}}}創建WebActivity? 實現文件下載到sd卡? 并且以來x5Webview進行瀏覽
private void downloadFile(final String url, final String path) {RequestParams requestParams = new RequestParams(url);requestParams.setSaveFilePath(path);// 下載完成后自動為文件命名requestParams.setAutoRename(true);x.http().get(requestParams, new Callback.CacheCallback<File>() {@Overridepublic boolean onCache(File result) {return false;}@Overridepublic void onSuccess(File result) {Log.d("success", "下載成功" + path);// 下載成功后加載文件displayFile(BASE_PATH, docName);}@Overridepublic void onError(Throwable ex, boolean isOnCallback) {Log.e("success", "下載失敗" + ex.getMessage().toString());Toast.makeText(WebActivity.this, "文件下載失敗", Toast.LENGTH_SHORT).show();}@Overridepublic void onCancelled(CancelledException cex) {}@Overridepublic void onFinished() {}});}@Overrideprotected void onDestroy() {super.onDestroy();mTbsReaderView.onStop();}@Overridepublic void onCallBackAction(Integer integer, Object o, Object o1) {Log.d("call", "==================+++++====-=-=++" + integer);}private void displayFile(String filePath, String fileName) {//增加下面一句解決沒有TbsReaderTemp文件夾存在導致加載文件失敗String bsReaderTemp =BASE_PATH;File bsReaderTempFile = new File(bsReaderTemp);if (!bsReaderTempFile.exists()) {Log.e("print", "準備創建/TbsReaderTemp!!");boolean mkdir = bsReaderTempFile.mkdir();if (!mkdir) {Log.e("print", "創建/TbsReaderTemp失敗!!!!!");}}Bundle bundle = new Bundle();bundle.putString("filePath", filePath);bundle.putString("tempPath", BASE_PATH);boolean result = mTbsReaderView.preOpen(getFileType(filePath.toString()), false);Log.e("print", "查看文檔---" + result);if (result) {mTbsReaderView.openFile(bundle);} else {}}/*** 后綴名的判斷** @param paramString* @return*/private String getFileType(String paramString) {String str = "";if (TextUtils.isEmpty(paramString)) {Log.e("print", "paramString---->null");return str;}Log.e("print", "paramString:" + paramString);int i = paramString.lastIndexOf('.');if (i <= -1) {Log.e("print", "i <= -1");return str;}str = paramString.substring(i + 1);Log.e("print", "paramString.substring(i + 1)------>" + str);return str;}xml文件?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><RelativeLayoutandroid:id="@+id/tbsView"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/teal_200"/></LinearLayout>下載地址?demo? ?寫于2022-3-23? ?聯系作者 352679497@qq.com
總結
以上是生活随笔為你收集整理的Android 基于x5Webview 浏览文件 office文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习基础教程 -应用随机微分方程20
- 下一篇: SpringBoot+Mybatis-p