z***@sina.com
z***@sina.com
  • 发布:2024-02-22 22:11
  • 更新:2024-02-23 22:17
  • 阅读:201

uniapp app(非H5)如何打开文件/文件夹窗口

分类:uni-app

uniapp app(非H5)如何打开文件/文件夹窗口,用下面api打不开;目的:打开已保存json文件窗口,望大神回复,万分感谢!!!
uni.openDocument({
filePath: '/storage/emulated/0/Android/data/io.dcloud.HBuilder/documents',
// filePath: '/storage/emulated/0/Download/WeiXin/dpkc1.json',
showMenu: true,
success: function (res) {
console.log('打开文档成功');
}
});

2024-02-22 22:11 负责人:无 分享
已邀请:
喜欢技术的前端

喜欢技术的前端 - QQ---445849201

我这里有android 获取json文件的代码

resultPath(path) {  
                let _this = this;  
                let documengtPath = path;  
                let lastFormat = documengtPath.substr(documengtPath.lastIndexOf(".") + 1).toLowerCase();  
                let Business = documengtPath.split("/");  
                let documentName = Business[Business.length - 1];  
                console.log("file://"+documengtPath, lastFormat, documentName);  
            },  
            goSendDocument() {  
                // #ifdef APP-PLUS  
                if (plus.os.name.toLowerCase() != "android") {  
                    uni.showModal({  
                        title: '提示',  
                        content: '仅支持Android平台',  
                        success: function(res) {}  
                    });  
                    return false  
                }  
                let that = this  
                // java 代码来自 http://www.cnblogs.com/panhouye/archive/2017/04/23/6751710.html  
                let main = plus.android.runtimeMainActivity();  
                let Intent = plus.android.importClass("android.content.Intent");  

                let fileIntent = new Intent(Intent.ACTION_GET_CONTENT)  
                fileIntent.setType("*/*"); //无类型限制  
                fileIntent.addCategory(Intent.CATEGORY_OPENABLE);  
                main.startActivityForResult(fileIntent, 1);  
                // 获取回调  
                main.onActivityResult = function(requestCode, resultCode, data) {  
                    let Activity = plus.android.importClass("android.app.Activity");  
                    let ContentUris = plus.android.importClass("android.content.ContentUris");  
                    let Cursor = plus.android.importClass("android.database.Cursor");  
                    let Uri = plus.android.importClass("android.net.Uri");  
                    let Build = plus.android.importClass("android.os.Build");  
                    let Environment = plus.android.importClass("android.os.Environment");  
                    let DocumentsContract = plus.android.importClass("android.provider.DocumentsContract");  
                    let MediaStore = plus.android.importClass("android.provider.MediaStore");  
                    // 给系统导入 contentResolver  
                    let contentResolver = main.getContentResolver()  
                    plus.android.importClass(contentResolver);  
                    // 返回路径  
                    let path = '';  
                    if (resultCode == Activity.RESULT_OK) {  
                        let uri = data.getData()  
                        if ("file" == uri.getScheme().toLowerCase()) { //使用第三方应用打开  
                            path = uri.getPath();  
                            return;  
                        }  
                        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) { //4.4以后  
                            path = getPath(this, uri);  
                        } else { //4.4以下下系统调用方法  
                            path = getRealPathFromURI(uri)  
                        }  
                        // 回调  
                        that.resultPath(path)  
                        // that.$emit('result', path)  
                    }  
                    // 4.4 以上 从Uri 获取文件绝对路径  
                    function getPath(context, uri) {  
                        let isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;  
                        let scheme = uri.getScheme().toLowerCase()  
                        if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) {  
                            // ExternalStorageProvider  
                            if (isExternalStorageDocument(uri)) {  
                                let docId = DocumentsContract.getDocumentId(uri);  
                                let split = docId.split(":");  
                                let type = split[0];  
                                // 如果是手机内部存储  
                                if ("primary" == type.toLowerCase()) {  
                                    return Environment.getExternalStorageDirectory() + "/" + split[1];  
                                } else {  
                                    return '/storage/' + type + "/" + split[1];  
                                }  
                            }  
                            // DownloadsProvider  
                            else if (isDownloadsDocument(uri)) {  
                                let id = DocumentsContract.getDocumentId(uri);  
                                let split = id.split(":");  
                                return split[1]  
                                // console.log(id)  
                                // let contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), id);  
                                // return getDataColumn(context, contentUri, null, null);  
                            }  
                            // MediaProvider  
                            else if (isMediaDocument(uri)) {  
                                let docId = DocumentsContract.getDocumentId(uri);  
                                let split = docId.split(":");  
                                let type = split[0];  
                                let contentUri = null;  
                                if ("image" == type.toLowerCase()) {  
                                    contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  
                                } else if ("video" == type.toLowerCase()) {  
                                    contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;  
                                } else if ("audio" == type.toLowerCase()) {  
                                    contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;  
                                }  
                                let selection = "_id=?";  
                                let selectionArgs = [split[1]];  
                                return getDataColumn(context, contentUri, selection, selectionArgs);  
                            }  
                        }  
                        // MediaStore (and general)  
                        else if ("content" == scheme) {  
                            return getDataColumn(context, uri, null, null);  
                        }  
                        // File  
                        else if ("file" == scheme) {  
                            return uri.getPath();  
                        }  
                    }  
                    // 4.4 以下 获取 绝对路径  
                    function getRealPathFromURI(uri) {  
                        let res = null  
                        let proj = [MediaStore.Images.Media.DATA]  
                        let cursor = contentResolver.query(uri, proj, null, null, null);  
                        if (null != cursor && cursor.moveToFirst()) {  
                            ;  
                            let column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);  
                            res = cursor.getString(column_index);  
                            cursor.close();  
                        }  
                        return res;  
                    }  
                    // 通过uri 查找出绝对路径  
                    function getDataColumn(context, uri, selection, selectionArgs) {  
                        let cursor = null;  
                        let column = "_data";  
                        let projection = [column];  
                        // let contentResolver = context.getContentResolver()  
                        // plus.android.importClass(contentResolver);  
                        cursor = contentResolver.query(uri, projection, selection, selectionArgs, null);  
                        if (cursor != null && cursor.moveToFirst()) {  
                            let column_index = cursor.getColumnIndexOrThrow(column);  
                            return cursor.getString(column_index);  
                        }  
                    }  

                    function isExternalStorageDocument(uri) {  
                        return "com.android.externalstorage.documents" == uri.getAuthority() ? true : false  
                    }  

                    function isDownloadsDocument(uri) {  
                        return "com.android.providers.downloads.documents" == uri.getAuthority() ? true : false  
                    }  

                    function isMediaDocument(uri) {  
                        return "com.android.providers.media.documents" == uri.getAuthority() ? true : false  
                    }  
                }  
                // #endif  
            },
套马杆的套子

套马杆的套子 - 没有解决不了的问题,只有解决不完的问题

openDocument不支持打开json,支持格式:doc, xls, ppt, pdf, docx, xlsx, pptx
可以给内容读出来吧,然后自己格式化展示,不知道你需要编辑不

  • z***@sina.com (作者)

    请问能不能打开文件夹窗口,如何打开,谢谢!

    2024-02-23 20:14

要回复问题请先登录注册