Pergunta

Assim como o iPhone tem um UIImagePickerController para deixar as fotos de acesso do usuário armazenados no dispositivo, temos um controle semelhante no SDK Android?

Graças.

Foi útil?

Solução

Você pode usestartActivityForResult, passando de uma Intenção que descreve uma ação desejada concluído ee fonte de dados para executar a ação.

Para a sua sorte, Android inclui uma Ação para coisas picking: Intent.ACTION__PICK e uma fonte de dados que contém as imagens: android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI para imagens no dispositivo local ou android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI para imagens no cartão SD.

Chamada startActivityForResult passando na ação picareta e as imagens que você deseja que o usuário selecionar a partir da seguinte forma:

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

Em seguida, substituir onActivityResult para ouvir o usuário ter feito uma seleção.

@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
    } 
}

Depois de ter a imagem Uri você pode usá-lo para acessar a imagem e fazer o que você precisa fazer com ele.

Outras dicas

Você também pode fazer:

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

Este vai pegar imagens em todos os armazenamentos.

Apenas uma atualização para a resposta dada por Reto. Você poderia fazer isso para dimensionar a imagem:

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);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top