这个问题最初是针对 Android 1.6 提出的。
我正在我的应用程序中处理照片选项。
我的 Activity 中有一个按钮和一个 ImageView。当我单击该按钮时,它会重定向到画廊,我将能够选择一个图像。选定的图像将出现在我的 ImageView 中。
近5年后更新的答案:
原始答案中的代码不再可靠工作,因为来自不同来源的图像有时会返回不同的内容 URI,即 content://
而不是 file://
.更好的解决方案是简单地使用 context.getContentResolver().openInputStream(intent.getData())
,因为这将返回一个您可以选择处理的 InputStream。
例如,BitmapFactory.decodeStream()
在这种情况下工作得很好,因为您还可以使用 Options 和 inSampleSize 字段对大图像进行下采样并避免内存问题。
但是,像 Google Drive 这样的东西会将 URI 返回到实际上尚未下载的图像。因此,您需要在后台线程上执行 getContentResolver() 代码。
原答案:
其他答案解释了如何发送 Intent ,但没有很好地解释如何处理响应。这是有关如何执行此操作的一些示例代码:
protected void onActivityResult(int requestCode, int resultCode,
Intent imageReturnedIntent) {
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
switch(requestCode) {
case REQ_CODE_PICK_IMAGE:
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]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
}
}
}
columnIndex
之前你不知道它在哪一列。代码。这只是根据其名称获取列的编号,与过滤过程中使用的相同。完成后,您终于可以使用我提供的最后一行代码将图像解码为位图。
关于android - 如何为我的应用从图库(SD 卡)中选择图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507898/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |