使用字串 "android.media.action.IMAGE_CAPTURE" 建立 Intent 易拼寫錯誤,導致 EXTRA_OUTPUT 附加失敗。應使用 MediaStore 定義的常數。
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, TAKE_PICTURE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE && resultCode == RESULT_OK) {
// 照片已儲存至 fileUri
Toast.makeText(this, "Image saved to:\n" + fileUri, Toast.LENGTH_LONG).show();
}
}
MediaStore.ACTION_IMAGE_CAPTURE 避免字串錯誤。fileUri 必須為有效 Uri,指向可寫入路徑(如 getExternalFilesDir)。FileProvider 產生 content:// Uri。