我正在尝试从我的应用程序上传文件到服务器。允许用户从其内部存储中附加文件。但是我从Nougat手机获得的路径与标准/storage/emulated/0/...
有所不同。在少数手机中,我得到external_files/...
而在其他手机中,我得到root_files/storage/999/....
。在这种情况下,我没有得到文件的正确路径。我们如何处理这种情况?
我的代码:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri selectedImageUri = data.getData();
String filePath = data.getData().getPath();
File sourceFile = new File(fileFields.get(i).getFileName());
FileInputStream fileInputStream = new FileInputStream(sourceFile);
}
}
答案 0 :(得分:0)
Uri
不是文件。除非getPath()
的方案恰好是Uri
,否则file
毫无意义。这在新的Android设备上并不常见。相反,该方案将为content
,getPath()
对您无用。
相反,对于file
和content
Uri
值,请使用ContentResolver
和openInputStream()
获取已识别内容的InputStream
由Uri
。这种方法可以一直回到Android 1.0。