Android 應用常需讓用戶從相簿選圖,推薦調用系統 Gallery 而非自行掃描路徑。本文解析 Gallery 的 Intent Filter 結構與回傳 Uri 處理邏輯。
<action android:name="android.intent.action.PICK" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
<data android:mimeType="video/*" />
對應常量:Intent.ACTION_PICK,MIME 類型 image/* 選圖,video/* 選影片。
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK && data != null) {
Uri selectedImage = data.getData();
// 透過 ContentResolver 查詢實際路徑或直接用 Uri 載入圖片
}
}
選圖後 Gallery 內部邏輯:檢查檔案大小、是否超過 MMS 限制、處理 crop 參數(圓形裁剪等)、啟動裁剪 Activity 或直接返回 Uri。開發者可透過 intent.putExtra("crop", "circle") 要求裁剪。
掌握系統 Gallery Intent 機制,能以最少代碼實現穩健的選圖功能,兼容各廠商定製相簿。