从URI获取Android-Get文件路径?

时间:2015-08-09 08:50:10

标签: android path uri android-afilechooser

我需要获取文件的路径将其转换为输入流以上传purose。所以我选择pdf document使用文件选择器。我在onActivityResult()中得到 Uri 。使用uri,我得到文件的路径。但它没有返回正确的路径。 绝对路径:

when choosing file from internal storage 
         /document/primary:pdf/HA License Plate.pdf

when choosing file from external storage
        /document/9016-4EF8:certificates/img002.pdf

所以我无法获得正确的文件路径,转换为输入流。 那么请建议我在我的Android应用程序中获取正确的文件路径? 我使用的代码如下。

代码是: -

public void ChoosePDF(View v) {
    Intent intent = new Intent();
    // intent.setType("pdf/*");
    intent.setType("application/pdf");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Pdf"),
            REQUEST_CODE);
}

public void onActivityResult(int requestCode, int resultCode, Intent result) {
    if (resultCode == RESULT_OK) {
        if (requestCode == REQUEST_CODE) {
            Uri data = result.getData();


            if (data.getLastPathSegment().endsWith("pdf")) {
                String pdfPath = data.getPath();
                File myFile = new File(data.getPath());

                Log.i("FirstActivity", "pdfPath is " + pdfPath);
                Log.i("FirstActivity", "uri abs path is " + myFile.getAbsolutePath());

            } else {
                Toast.makeText(SplashScreenActivity.this,
                        "Invalid file type.Please choose valid file!",
                        Toast.LENGTH_LONG).show();
            }
        }
    }
}

获取文件路径时是否有任何特定于Android版本的问题?我使用android棒棒糖设备进行测试?

1 个答案:

答案 0 :(得分:-2)

使用File file = new File(new URI(data.toString()));