1. 程式人生 > >獲取sd卡中的圖片URL並顯示,同時使用ImageView把選擇的圖片展現出來

獲取sd卡中的圖片URL並顯示,同時使用ImageView把選擇的圖片展現出來

配置檔案get_picture_url.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <Button
        android:id="@+id/select"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="請選擇SD卡中的圖片" />


    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />


    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher" />


</LinearLayout>

java檔案GetPictureUrl.java

package com.example.zgetpictureurl;  
  
import java.io.IOException;  
import android.app.Activity;  
import android.content.ContentResolver;  
import android.content.Intent;  
import android.database.Cursor;  
import android.graphics.Bitmap;  
import android.graphics.BitmapFactory;
import android.net.Uri;  
import android.os.Bundle;  
import android.provider.MediaStore;  
import android.util.Log;  
import android.view.View;  
import android.widget.Button;  
import android.widget.ImageView;
import android.widget.TextView;
  
public class GetPictureUrl extends Activity {  
    private Button select;
    private TextView showURL;
    private ImageView showPicture;
    private final String IMAGE_TYPE = "image/*";  
    private final int IMAGE_CODE = 0;   
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.get_picture_url);  
        select = (Button)findViewById(R.id.select);  
        select.setOnClickListener(new View.OnClickListener(){  
            public void onClick(View v) {  
                Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);  
                getAlbum.setType(IMAGE_TYPE);  
                startActivityForResult(getAlbum, IMAGE_CODE);  
            }  
        });  
    }  
    protected void onActivityResult(int requestCode, int resultCode, Intent data){  
        if (resultCode != RESULT_OK) { 
        	//此處的 RESULT_OK 是系統自定義得一個常量
        	//Log.e(TAG,"ActivityResult resultCode error");  
            return;  
        }  
        Bitmap bm = null;  
        ContentResolver resolver = getContentResolver();          
        if (requestCode == IMAGE_CODE) {  
            try {  
            	//獲得圖片的uri 
                Uri originalUri = data.getData();      
                //顯得到bitmap圖片  
                bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);       
                //這裡開始的第二部分,獲取圖片的路徑:  
                String[] proj = {MediaStore.Images.Media.DATA};          
                Cursor cursor = managedQuery(originalUri, proj, null, null, null);   
                //按我個人理解 這個是獲得使用者選擇的圖片的索引值  
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);             
                cursor.moveToFirst();  
                //最後根據索引值獲取圖片路徑  
                String path = cursor.getString(column_index);  
                Log.e("Lostinai",path);


                //通過TextView來展示sd卡中圖片的url,以方便寫進資料庫
                showURL = (TextView)findViewById(R.id.textView1);
                showURL.setText(path);
                   
                //通過ImageView來展示圖片的內容
                showPicture = (ImageView)findViewById(R.id.imageView1);
                Bitmap bit = BitmapFactory.decodeFile(path);
                showPicture.setImageBitmap(bit);
                
                
            }catch (IOException e) {  
                Log.e("Lostinai",e.toString());   
            }  
        }  
    }        
}  

AndroidManifest.xml中新增程式碼

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 其中Medium Text就是用來顯示sd卡中圖片的URL的