附加文件并上传到服务器 - Android Nougat

时间:2017-10-09 11:36:39

标签: android file internal-storage android-7.0-nougat

我正在尝试从我的应用程序上传文件到服务器。允许用户从其内部存储中附加文件。但是我从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);
    }
} 

1 个答案:

答案 0 :(得分:0)

Uri不是文件。除非getPath()的方案恰好是Uri,否则file毫无意义。这在新的Android设备上并不常见。相反,该方案将为contentgetPath()对您无用。

相反,对于filecontent Uri值,请使用ContentResolveropenInputStream()获取已识别内容的InputStreamUri。这种方法可以一直回到Android 1.0。