你好,我们有文件选择器,并希望当用户选择带文件选择器的文件时,返回所选文件的上传路径。现在我想如何获取所选文件的路径。我想要像这样的文件路径 - > /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);
}
答案 0 :(得分:1)
ACTION_GET_CONTENT
这不可靠,因为不要求Uri
返回指向您可以访问的文件。该文件可能位于应用程序的内部存储中,也可能位于可移动媒体上,甚至位于某个地方的云中。感觉就像本周第五次...... a Uri
is not a file。
通过Uri
上的ContentResolver
和openInputStream()
上的方法按设计使用getType()
。
答案 1 :(得分:0)
尝试使用这些代码获取文件的路径,使用 openFileOutput
创建文件的路径public String getFilePath(Context context,String YourFileName)
{
File f= context.getFileStreamPath(YourFileName);
return f.getAbsolutePath();
}