访问图片从图片应用程序在我的Android应用
-
23-08-2019 - |
题
就像iPhone拥有的UIImagePickerController让存储在设备上的用户访问图片,我们是否在Android SDK类似的控制?
感谢。
解决方案
您可以usestartActivityForResult
,传递的是描述要完成一个动作,并和数据源,以执行动作的意图。
幸运的是,Android包括用于拾取事物的行动:Intent.ACTION__PICK
和包含图片数据源:
android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI
为图像在本地设备上或
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI
用于SD卡上的图像。
呼叫startActivityForResult
通过在取行动,你想要的图像用户从这样的选择:
startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);
然后重写onActivityResult
来监听用户作出的选择。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SELECT_IMAGE)
if (resultCode == Activity.RESULT_OK) {
Uri selectedImage = data.getData();
// TODO Do something with the select image URI
}
}
一旦你的图像开放的,你可以用它来访问图像和做任何你需要做的事。
其他提示
您也可以这样做:
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);
此将选择在所有储存的图像。
只是一个更新到由雷托给出的答案。你可以这样做缩放图像:
private String getPath(Uri uri) {
String[] data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
不隶属于 StackOverflow