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