45

iPhone に UIImagePickerController があり、ユーザーがデバイスに保存されている画像にアクセスできるように、Android SDK にも同様のコントロールがありますか?

ありがとう。

4

3 に答える 3

87

を使用startActivityForResultして、完了させたいアクションを説明するインテントと、アクションを実行するデータソースを渡すことができます。

幸いなことに、Androidには、物を選ぶためのアクションと、ローカルデバイス上の画像または SDカード上の画像用の画像Intent.ACTION__PICKを含むデータソースが含ま れています。android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URIandroid.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI

startActivityForResult次のように、選択アクションとユーザーに選択させたい画像を渡すように呼び出します。

startActivityForResult(new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI), SELECT_IMAGE);

次に、オーバーライドonActivityResultして、選択を行ったユーザーをリッスンします。

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == SELECT_IMAGE)
    if (resultCode == Activity.RESULT_OK) {
      Uri selectedImage = data.getData();
      // TODO Do something with the select image URI
    } 
}

画像のURIを取得したら、それを使用して画像にアクセスし、必要な操作を行うことができます。

于 2009-02-15T16:26:31.740 に答える
22

次のこともできます。

Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*");
startActivityForResult(photoPickerIntent, 1);

これにより、すべてのストレージから画像が選択されます。

于 2011-10-08T12:10:35.737 に答える
1

Retoからの回答を更新しただけです。これを行うと、画像をスケーリングできます。

private String getPath(Uri uri) {
String[]  data = { MediaStore.Images.Media.DATA };
CursorLoader loader = new CursorLoader(context, uri, data, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
于 2013-01-30T13:46:31.573 に答える