栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 基于x5Webview 浏览文件 office文档

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);
            }
        }
    }

    @Override
    protected 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() {
            @Override
            public boolean onCache(File result) {
                return false;
            }

            @Override
            public void onSuccess(File result) {
                Log.d("success", "下载成功" + path);
                // 下载成功后加载文件
                displayFile(base_PATH, docName);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e("success", "下载失败" + ex.getMessage().toString());
                Toast.makeText(WebActivity.this, "文件下载失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(CancelledException cex) {

            }
            @Override
            public void onFinished() {

            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mTbsReaderView.onStop();
    }
   

    @Override
    public 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 {
        }
    }

    
    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文件 



    

下载地址 demo   写于2022-3-23   联系作者 352679497@qq.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号