//Android中從圖庫和相機拍照選擇圖片示例 public class MainActivity extends Activity { private static final int FROM_GALLERY = 100;// 圖庫請求碼 private static final int FROM_CAMERA = 101;// 相機請求碼 private ImageView showimage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.showimage = (ImageView) this.findViewById(R.id.showimage); } public void clickButton(View view) { switch (view.getId()) { case R.id.but_gallery: startGallery(); break; case R.id.but_camera: startCamera(); break; } } // 點擊相機選擇按鈕 private void startCamera() { Intent intent = new Intent(); intent.setAction("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, FROM_CAMERA); } // 選擇從圖庫中選擇按鈕 private void startGallery() { Intent intent = new Intent(); // intent.ACTION_PICK="android.intent.action.PICK" intent.setAction(intent.ACTION_PICK); intent.setType("image/*");// 要設置數據類型,否則會出錯 startActivityForResult(intent, FROM_GALLERY); } // 選擇圖片返回值的接收 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != Activity.RESULT_OK || data == null) { Toast.makeText(this, "您沒有選擇圖片!!", Toast.LENGTH_SHORT).show(); return; } // 圖庫中返回判斷 if (requestCode == FROM_GALLERY) { // 從圖庫中返回後的數據,使用contentResolverd內容解析器 Uri uri = data.getData(); ContentResolver contentResolver = getContentResolver(); try { // 轉爲流 InputStream is = contentResolver.openInputStream(uri); // 再將流轉爲位圖 Bitmap bitmap = BitmapFactory.decodeStream(is); showimage.setImageBitmap(bitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } } // 相機中返回判斷 if (requestCode == FROM_CAMERA) { Bitmap bitmap = data.getParcelableExtra("name"); showimage.setImageBitmap(bitmap); } } }