如何在Android中从内容URI获取文件路径?

6tr1vspr  于 2023-01-19  发布在  Android
关注(0)|答案(2)|浏览(237)

所以我的问题是,我想从内容URI获得文件路径,我在谷歌上搜索过,但我没有得到任何解决方案,请帮助我解决这个问题。
这是我的代码我已经尝试

Intent getPdf = getIntent();
        String action = getPdf.getAction();
        String type = getPdf.getType();
        Log.d("sdsfgsdfsdf",""+type);
        if (Intent.ACTION_SEND.equals(action) ||Intent.ACTION_VIEW.equals(action) || type != null){
            if (type.startsWith("application/pdf")){
                viewPdf(getPdf,action);
            }
        }

     private void viewPdf(Intent getPdf, String action) {
        Uri uri = Uri.parse(getPdf.getData().toString());

        if (uri != null) {
            File file = new File(String.valueOf(uri.getPath()));
            name = file.getName();
            path = String.valueOf(uri);
            Log.d("sdsfgsdfsdf",""+name);
        }else {
//            Toast.makeText(this, ""+ uri.toString(), Toast.LENGTH_SHORT).show();

        }
    }

这是输出内容://com.android.外部存储.documents/document/主要%3A内容应用%2F媒体%2F内容应用%20文档%2FAJAX_And_PHP_Building_Responsive_Web_Applications-(2006).pdf
但我想获取file://路径而不是内容URI

jk9hmnmh

jk9hmnmh1#

不清楚你从哪里得到这个内容方案的uri。
你应该从这个开始
此外,试图为它获取路径是没有意义的,因为大多数情况下,您将不会有读访问权限。
此外,您没有说明需要路径的原因
使用uri!使用内容方案。

wydwbb8l

wydwbb8l2#

您可以使用PickiT库从URI获取路径。
如何使用它的示例代码。

PickiT pickiT = new PickiT(this, new PickiTCallbacks() {
        @Override
        public void PickiTonUriReturned() {
        }

        @Override
        public void PickiTonStartListener() {
        }

        @Override
        public void PickiTonProgressUpdate(int progress) {
        }

        @Override
        public void PickiTonCompleteListener(String filePath, boolean wasDriveFile, boolean wasUnknownProvider, boolean wasSuccessful, String Reason) {
            if (wasSuccessful) {
                // Use file path
            }
        }
        @Override
        public void PickiTonMultipleCompleteListener(ArrayList<String> paths, boolean wasSuccessful, String Reason) {

        }
    }, this);

pickiT.getPath(uri, Build.VERSION.SDK_INT);

相关问题