是的,Android的圖片選擇器(Image Picker)可以自定義篩選條件。你可以通過以下方法實現自定義篩選條件:
private static final int REQUEST_CODE_PICK_IMAGE = 1;
private void pickImage() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "選擇圖片"), REQUEST_CODE_PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri selectedImageUri = data.getData();
// 在這里處理選中的圖片,例如顯示在ImageView中
}
}
要自定義篩選條件,你可以在創建Intent時設置額外的參數,然后在onActivityResult方法中解析這些參數。例如,你可以設置一個最大圖片尺寸:
private static final int REQUEST_CODE_PICK_IMAGE = 1;
private static final String EXTRA_MAX_SIZE = "com.example.imagepicker.max_size";
private void pickImage() {
int maxSize = 1024 * 1024; // 1MB
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra(EXTRA_MAX_SIZE, maxSize);
startActivityForResult(Intent.createChooser(intent, "選擇圖片"), REQUEST_CODE_PICK_IMAGE);
}
在onActivityResult方法中解析最大尺寸參數:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri selectedImageUri = data.getData();
int maxSize = data.getIntExtra(EXTRA_MAX_SIZE, 0);
if (maxSize > 0) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), selectedImageUri);
if (bitmap != null && bitmap.getByteCount() > maxSize) {
// 如果圖片大小超過最大尺寸,提示用戶并重新選擇
Toast.makeText(this, "圖片大小超過最大限制,請重新選擇", Toast.LENGTH_SHORT).show();
pickImage();
} else {
// 在這里處理選中的圖片,例如顯示在ImageView中
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
// 在這里處理選中的圖片,例如顯示在ImageView中
}
}
}
通過這種方式,你可以根據需要自定義圖片選擇器的篩選條件。