我无法获得实际的路径android文件

时间:2016-04-20 12:02:09

标签: android path

我正在尝试使用Android浏览器获取文件的完整路径。因此,我使用以下代码:

private void showFileChooser() {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("*/*");
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        try {
            startActivityForResult(
                    Intent.createChooser(intent, "Select a file"), FILE_SELECT_CODE);
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(this, "You don't have a browser installed", Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode==FILE_SELECT_CODE && resultCode==Activity.RESULT_OK) {

                    // Get the Uri of the selected file
                    Uri uri = data.getData();
                    Log.d(TAG, "URI del archivo a enviar: " + uri.toString());
                    // Get the path
                    final String path=Environment.getExternalStorageDirectory().toString()+uri.getPath();
                    Log.d(TAG, "Path del archivo a enviar: " +path);
                    File archivoPruebaParaSaberSiExiste = new File(path);


                    if(archivoPruebaParaSaberSiExiste.exists()) {
                        Log.d(TAG,"File exists");
                    else{
                        Log.d(TAG,"File does not exist");
                    }

        }
        super.onActivityResult(requestCode, resultCode, data);
    }


 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

但是,我没有得到文件路径:

The file path which i get is: 
      /storage/emulated/0/data/external/images/media/1949

The actual path is: 
     /storage/emulated/0/DCIM/Camera/20165481_133918.jpg

我不知道发生了什么。

1 个答案:

答案 0 :(得分:0)

  

我正在尝试使用Android浏览器获取文件的完整路径。

您没有选择文件。您正在挑选一段内容。不要求这是一个文件。

  

但是,我没有得到文件路径

同样,所选内容不一定是文件。

根据您的结果,Uri的方案为content,而不是file。这是完全正常的,将来会成为Uri的主要形式。要consume a content Uri,请使用ContentResolveropenInputStream()等方法。