Filepath Converter识别文档Uri

时间:2019-12-22 22:13:18

标签: android uri media filepath

我正在写应用程序中要查找URI实际文件路径的部分。但是,当从文件选择器的“音频”选项卡打开文件时无法识别它时,URI格式不同,因为uri的isMediaDocument或isDownloadsDocument格式不同,因此我编写的代码仅用于isExternalStorageDocument。如何从这些格式不同的URI中获取真实的文件路径。

代码如下:

if (DocumentsContract.isDocumentUri(context.getApplicationContext(), uri)) {
        if (isExternalStorageDocument(uri)) {
            final String docId = DocumentsContract.getDocumentId(uri);
            final String[] split = docId.split(":");
            final String type = split[0];
            File fileList[] = new File("/storage/").listFiles();
            for (File file : fileList) {
                if (!file.toString().contains("self") && !file.toString().contains("emulated")) {
                    sdPath = file.toString();
                    System.out.println("SD PATH SUCCESSFULLY IDENTIFIED!: " + sdPath);
                }
                sdCheck(uri);
            }
            System.out.println(removableStoragePath);
            return removableStoragePath + "/" + split[1];

        } else if(isMediaDocument(uri)){
                String pathUtil = uri.getPath();
                System.out.println("Media document: " + pathUtil);
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                File fileList[] = new File("/storage/").listFiles();
                for (File file : fileList) {
                    if (file.toString().contains("self") || file.toString().contains("emulated")) {
                        sdPath = file.toString();
                        System.out.println("SD PATH SUCCESSFULLY IDENTIFIED!: " + sdPath);
                    }
                    sdCheck(uri);
                }
                System.out.println(removableStoragePath);
                return removableStoragePath + "/" + split[1];
            }
        else if (isDownloadsDocument(uri)){
            Toast.makeText(context, "Cannot Use Downloads Tab", Toast.LENGTH_LONG).show();
        }

0 个答案:

没有答案
相关问题