fotos de acesso a partir de fotos app em meu aplicativo android
-
23-08-2019 - |
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.
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);
}