我试图仅从Android图库中选择图像,而不是其他应用程序,如照片,文件管理器等
我需要一个解决方案来直接打开Gallery App,还是可以使用照片应用程序来选择图像?
1)从图库中选择
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
// start the image capture Intent
startActivityForResult(intent,CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
2)onActivityResult结果代码
try {
// bimatp factory
BitmapFactory.Options options = new BitmapFactory.Options();
// downsizing image as it throws OutOfMemory Exception for larger images
options.inSampleSize = 2;
final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),options);
descimage.setImageBitmap(bitmap);
bitmap.compress(CompressFormat.JPEG, 80, new FileOutputStream(new File(fileUri.getPath())));
photostatus = 1;
pbar.setVisibility(View.VISIBLE);
txtbrowser.setEnabled(false);
new upload().execute();
} catch (NullPointerException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
你应该知道在运行Lollipop的某些设备上Gallery no longer exists。照片应用程序是替代品,处理选择图像的意图应该没有问题。 Intent.ACTION_GET_CONTENT
通常为recommended for selecting images,例如:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, ID);
在已安装它的设备上打开图库会议here。基本上每个不同的供应商可能会发布不同的图库应用。
可以通过使用PackageManager.queryIntentActivities() API迭代用户设备上的所有可用包,而不显示选择器对话框来启动隐式意图(例如选择图像)的特定活动,以便您可以明确地启动你需要的那个。
答案 1 :(得分:0)
此意图允许您从默认图库中选择图像。
// in onCreate or any event where your want the user to select a file
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,
"Select Picture"), SELECT_PICTURE);
用于在onActivityResult()
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
}
}
}
我从here
获得了解决方案