Use ImagePicker.getInstance() to launch the selection flow. You must pass the current Activity, a boolean for whether to enable cropping, and your PickCallback implementation.
Required Activity Overrides
To ensure the picker functions correctly, you MUST forward the following activity lifecycle methods to the ImagePicker instance:
onActivityResult(int requestCode, int resultCode, @Nullable Intent data)onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
public class ImagePickerActivity extends FragmentActivity {
private final PickCallback cropCallback = new PickCallback() {
@Override
public void onPermissionDenied(String[] permissions, String message) {
// Handle permission denial
}
@Override
public void cropConfig(ActivityBuilder builder) {
builder.setMultiTouchEnabled(true)
.setGuidelines(CropImageView.Guidelines.ON_TOUCH)
.setCropShape(CropImageView.CropShape.OVAL)
.setRequestedSize(400, 400)
.setFixAspectRatio(true)
.setAspectRatio(1, 1);
}
@Override
public void onCropImage(@Nullable Uri imageUri) {
// Handle the cropped image Uri
}
};
public void onCamera(View view) {
// Start camera selection with cropping enabled
ImagePicker.getInstance().startCamera(this, true, cropCallback);
}
public void onGallery(View view) {
// Start gallery selection with cropping enabled
ImagePicker.getInstance().startGallery(this, true, cropCallback);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ImagePicker.getInstance().onActivityResult(this, requestCode, resultCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
ImagePicker.getInstance().onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
}