如何从android10中的最近文件中获取文件路径

How to get the file path from the recent files in android 10

我正在创建一个应用程序,当我单击 select 文件按钮时,我必须从最近的文件部分获取路径。 但是在大于 23 的 Android SDK 版本中,uri.getPath() 没有给我路径,而是给了我 ID /document/document:100664.

我想要这样的路径 /document/primary:Download/test.txt

uri.getPath()仅适用于AndroidSDK版本小于或等于23。

下面是我用来获取路径的代码。

                if (Build.VERSION.SDK_INT <= 23) {
                    file = mediaFiles.get(0).getPath();
                }
                else {
                    Uri uri= mediaFiles.get(0).getUri();
                    String path = uri.getPath();
                    String path1 = path.substring(path.indexOf(":")+1);
                    File sdcard = Environment.getExternalStorageDirectory();
                    File dir = new File(sdcard.getAbsolutePath()+"/"+path1);
                    file = dir.toString();
                }

那么在android SDK 23以上的版本中如何获取最近文件部分的路径呢?

String path = uri.getPath();

File dir = new File(sdcard.getAbsolutePath()+"/"+path1);

尝试以这种方式构建文件系统路径是没有意义的。

它等同于所有获取 uri 函数的真实路径。

相反,您应该为获得的 uri 打开一个 InputStream,而不是像从 FileInputStream 一样从该流中读取;

InputStream is = getContentResolver().openInputStream(uri);

适应现代,直接用ur

查看 uri.toString() 以查看您获得的内容方案。