如何从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() 以查看您获得的内容方案。
我正在创建一个应用程序,当我单击 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() 以查看您获得的内容方案。