снимки с картинкой приложения в моем Android App

голоса
41

Так же, как iPhone имеет UIImagePickerController, чтобы позволить фотографии доступа пользователей, хранящиеся на устройстве, мы имеем подобный контроль в Android SDK?

Благодарю.

Задан 15/02/2009 в 14:57
источник пользователем
На других языках...                            


3 ответов

голоса
83

Вы можете использовать startActivityForResult, проходя в Intent , который описывает действия , которые вы хотите заполненные и и источник данных для выполнения действия на.

К счастью для вас, Android включает в себя Action для выбора вещей: Intent.ACTION__PICKи источник данных , содержащих фотографии: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URIдля изображений на локальном устройстве или android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URIдля изображения на SD - карте.

Вызов 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 вы можете использовать его для доступа к изображению и делать все, что вам нужно сделать с ним.

Ответил 15/02/2009 d 17:26
источник пользователем

голоса
22

Вы также можете сделать:

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

Это позволит выбрать изображения во всех хранилищах.

Ответил 08/10/2011 d 13:10
источник пользователем

голоса
1

Просто обновление для ответа, данного Рето. Вы можете сделать это, чтобы масштабировать изображение:

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);
}
Ответил 30/01/2013 d 14:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more