以下是我的代码:
if(v.getId() == R.id.button2)
{
Intent wpIntent = new Intent();
wpIntent.setType("image/*");
wpIntent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"), SELECT_PICTURE);
}
}
public void onActivityResult(int resultCode, int requestCode, Intent data)
{
if(resultCode == RESULT_OK)
{
if(requestCode == SELECT_PICTURE)
{
Uri selectedImage = data.getData();
selectedImagePath = getPath(selectedImage);
Toast.makeText(this, ""+selectedImagePath, Toast.LENGTH_SHORT).show();
}
}
}
private String getPath(Uri selectedImage)
{
String[] proj = {MediaStore.Images.Media.DATA};
cursor = managedQuery(selectedImage, proj, null, null, null);
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(columnIndex);
}
这张照片出了什么问题? onActivityResult中的Toast没有显示,这意味着这个东西不起作用。
我在这里做错了什么?
编辑:我添加了一些检查,结果是if(resultCode == RESULT_OK)没有返回true。为什么会这样?
编辑2 这很奇怪。删除'if'语句使程序运行正常。生成正确的图像Uri,整个工作正常。我仍然不明白为什么'if'语句会返回false。
答案 0 :(得分:0)
Uri selectedImage = data.getData();
selectedImagePath = getPath(selectedImage);
使用以下代码并尝试:::
Uri selectedImageuri = Uri.parse(data.getDataString());
你可以用这个uri做任何事情(可以设置为imageview或将其转换为位图)。
答案 1 :(得分:0)
结果代码就是result_cancelled。否则result_ok代码就在那里。
请参阅Get/pick an image from Android's built-in Gallery app programmatically以查看正确的工作示例......
答案 2 :(得分:0)
默认情况下,如果未在intent中指定返回结果代码,则gallery不会返回结果代码。您可以在意图中指定返回结果代码,方法是在代码中添加以下代码:
Intent wpIntent = new Intent();
wpIntent.setType("image/*");
wpIntent.setAction(Intent.ACTION_GET_CONTENT);
wpIntent.putExtra("return-data", true); //added snippet
startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"),SELECT_PICTURE);