Android/サンプルプログラム/ファイル入出力/ギャラリーからイメージ選択

ギャラリーからイメージファイルを選択する

Android端末に保存した画像をギャラリーから選択してトーストで情報を表示する。

手順

1.新規プロジェクトで任意のAndroidプロジェクトを作成する。
プロジェクト名:GallerySample
Package Name:gallery.sample
target Platform:任意
で作成する。

使用するxmlおよびソース

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="vertical"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
>
  <TextView
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:text="Hello World, MainActivity"
   />    
   <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Pick File from Gallery"
       android:id="@+id/pickButton"/> 
</LinearLayout>

レイアウトはLineLayoutを設定する。
テキストビューとボタンを1つずつ用意する。

MainActivity.java

package gallery.sample;

import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity
implements OnClickListener {

Button pickButton;
 int RESULT_PICK_FILENAME = 1;                                //①
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
   pickButton = (Button)findViewById(R.id.pickButton);
   pickButton.setOnClickListener(this);                    //②
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.layout.main, menu);            //③
   return true;
 }
 
 public void onClick(View v) {
   switch(v.getId()){
   case R.id.pickButton:                                    //④
     pickFilenameFromGallery();
     break;
   }
 }
 
 private void pickFilenameFromGallery() {
   Intent i = new Intent(
     Intent.ACTION_PICK,
     Media.EXTERNAL_CONTENT_URI);  
   startActivityForResult(i, RESULT_PICK_FILENAME);        //⑤
 }
 
 @Override
 protected void onActivityResult(
   int requestCode,
   int resultCode,
   Intent data) {
 
   super.onActivityResult(requestCode, resultCode, data);    //⑥
   
   if (requestCode == RESULT_PICK_FILENAME
     && resultCode == RESULT_OK
     && null != data) {
     Uri selectedImage = data.getData();                    //⑦
     String[] filePathColumn = { Media.DATA };                //⑧
   
     Cursor cursor = getContentResolver().query(
       selectedImage,
       filePathColumn, null, null, null);                    //⑨
     cursor.moveToFirst();                                    //⑩
   
     int columnIndex 
       = cursor.getColumnIndex(filePathColumn[0]);            //⑪
     String picturePath = cursor.getString(columnIndex);    //⑫
     cursor.close();                                        //⑬
   
     Toast.makeText(
       this, 
       picturePath, 
       Toast.LENGTH_LONG).show();                            //⑭
   }
 }
}


  • 最終更新:2014-08-16 20:10:37

このWIKIを編集するにはパスワード入力が必要です

認証パスワード