1. 程式人生 > >android拾遺06——從相簿選取圖片

android拾遺06——從相簿選取圖片

從相簿選取圖片 從相簿選取圖片的流程是:

  1. 使用startActivityForResult進入相簿選取圖片
  2. 使用onActivityResult讀取獲取到的uri
  3. 從uri中解析出圖片

程式碼:

package com.exe.feifei.choosepic;

import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import
android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; public class MainActivity extends ActionBarActivity { final static int REQUEST_CODE_PICK_IMAGE=0
; ImageView imageView; String path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView=(ImageView)findViewById(R.id.imageView); } public void choose(View v) { 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) { //從返回的結果裡面得到含有路徑的uri Uri uri=data.getData(); //有的裝置是將圖片封裝在data裡面傳送出來的所以uri可能會為空,需要驗證之後再決定 if (uri!=null) { //使用cursor查詢 Cursor cursor = getContentResolver().query(data.getData(), null, null, null, null, null); cursor.moveToFirst(); //路徑是在查詢結果的第二咧 path = cursor.getString(1); imageView.setImageBitmap(getImage(path)); } //如果是為空的話就從bundle裡面讀data else { Bundle bundle=data.getExtras(); imageView.setImageBitmap((Bitmap)bundle.get("data")); } } //根據路徑獲取圖片 private Bitmap getImage(String path) { InputStream is=null; Bitmap bitmap=null; try { is=new FileInputStream(path); bitmap= BitmapFactory.decodeStream(is); } catch (IOException exception) { System.out.print("IOwenti"); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return bitmap; } }