我正在创建一个图像转换器应用程序并需要用户从设备中选择图像文件,我使用模拟器,当我开始从图库中选择文件的意图时,它会在其文件夹中显示图像,但是点击文件夹,它只是重新打开图库而不是文件夹,这是我的代码
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, getString(R.string.selectf)),
FILE_SELECT_CODE);
} catch (ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
Toast.makeText(this, "Please install a File Manager.",
Toast.LENGTH_SHORT).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && resultCode == Activity.RESULT_OK) {
// Get the Uri of the selected file
Uri uri = data.getData();
//Log.d(TAG, "File Uri: " + uri.toString());
// Get the path
try {
Path = getPath(this, uri);
if( Path.endsWith("png") || Path.endsWith("gif") || Path.endsWith("jpg") || Path.endsWith("bmp")){
startprogress2();
progressDialog.onStart();
asyncTask = new loadAction();
asyncTask.execute();
}
else{
Toast.makeText(this, R.string.selecti,
Toast.LENGTH_SHORT).show();
}
}catch (URISyntaxException e) {
e.printStackTrace();
failtoloadtoast();
}catch(Exception e){
e.printStackTrace();
failtoloadtoast();
}
}else{
failtoloadtoast();
}
super.onActivityResult(requestCode, resultCode, data);
}
请记住,我必须使用户能够从文件管理器中选择图像文件,而不仅仅是图库,因为某些格式不会被图库读取。
答案 0 :(得分:0)
使用像这样:
<强>意图:强>
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 0);
要获取该结果:
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case 0:
if(resultCode == RESULT_OK){
Uri selectedImage = imageReturnedIntent.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
//file path of selected image
filePath = cursor.getString(columnIndex);
File f = new File(filePath);
filename= f.getName();
Toast.makeText(SiteViewFieldCreate.this, "Your Path:"+filePath, 2000).show();
Toast.makeText(SiteViewFieldCreate.this, "Your Filename:"+filename, 2000).show();
cursor.close();
}
break;
}
}
Reference。 希望这会给你一些解决方案。