在android中获取文件的路径

时间:2015-05-07 11:30:33

标签: android file

你好,我们有文件选择器,并希望当用户选择带文件选择器的文件时,返回所选文件的上传路径。现在我想如何获取所选文件的路径。我想要像这样的文件路径 - > /mnt/sdcard/DCIM/13.jpg

代码:

private void fnFileChooser(){
    Intent intent=new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    try{
        startActivityForResult(
                Intent.createChooser(intent, "Select a File to Upload"),
                fileSelectedCode);
    }
    catch (android.content.ActivityNotFoundException ex) {
    // Potentially direct the user to the Market with a Dialog
    Toast.makeText(this, "Please install a File Manager.",
            Toast.LENGTH_SHORT).show();
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {


            if (resultCode == RESULT_OK) {
                // Get the Uri of the selected file
                Uri uri = data.getData();
                path=uri.getPath();
                txtAddress.setText(uri.getPath());
                ImageView img=(ImageView) findViewById(R.id.imgTest);
                img.setImageURI(uri);
                /*String path = FileUtils.getPath(this, uri);
                Log.d(TAG, "File Path: " + path);*/
                // Get the file instance
                // File file = new File(path);
                // Initiate the upload
            }


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

2 个答案:

答案 0 :(得分:1)

ACTION_GET_CONTENT这不可靠,因为不要求Uri返回指向您可以访问的文件。该文件可能位于应用程序的内部存储中,也可能位于可移动媒体上,甚至位于某个地方的云中。感觉就像本周第五次...... a Uri is not a file

通过Uri上的ContentResolveropenInputStream()上的方法按设计使用getType()

答案 1 :(得分:0)

尝试使用这些代码获取文件的路径,使用 openFileOutput

创建文件的路径
public String getFilePath(Context context,String YourFileName)
        {
            File f= context.getFileStreamPath(YourFileName);
            return f.getAbsolutePath();
        }