access permission to android image gallery

Asked

Viewed 1,037 times

0

Hello, I’m creating an app that by clicking on an Imageview opens the gallery of images android, but when I open it was showing a dialog for whether or not the user wants to allow access to gallery, my question is what I could do if I deny access?

public class MainActivity extends AppCompatActivity {

    public static final int IMAGEM_INTERNA = 1;
    public static final int PERMISSAO_REQUEST = 2;

    EditText edtNome;
    ImageView imgProduto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Abre Dialog perguntando se o app da ou não permissão de acesso as pastas
        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){

          if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                  Manifest.permission.READ_EXTERNAL_STORAGE)){

          }else{
              ActivityCompat.requestPermissions(this,
                      new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSAO_REQUEST);
          }
        }


        edtNome = (EditText) findViewById(R.id.edtNome);
        imgProduto = (ImageView) findViewById(R.id.imgProduto);
    }


    public void pegarImagem(View view){
        //Chama todas as aplicações
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*"); //Define para aparecer apenas arquivos de imagens nas aplicações
        startActivityForResult(intent, IMAGEM_INTERNA);
    }

    //Checa se houver resposta das aplicações com imagens pega e seta no ImageView
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent){
        //Se houver aplicações com resposta
        if (requestCode == IMAGEM_INTERNA){
            //Se o processamento foi OK
            if (resultCode == RESULT_OK){
                Uri imagemSelecionada = intent.getData(); //Acessa recurso de imagem da aplicação

                String[] colunas = {MediaStore.Images.Media.DATA};

                Cursor cursor = getContentResolver().query(imagemSelecionada, colunas, null, null, null);
                cursor.moveToFirst();

                int indexColuna = cursor.getColumnIndex(colunas[0]);
                String pathImg = cursor.getString(indexColuna); //caminho da imagem
                cursor.close();

                Bitmap bitmap = BitmapFactory.decodeFile(pathImg);
                imgProduto.setImageBitmap(bitmap);
            }
        }
    }

    //Quando usuario escolhe se permissão a galeria é sim ou não para o app
    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults){

        if (requestCode == PERMISSAO_REQUEST){

            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                //Permissão concedida
            }else {
                //permissao negada, o que posso fazer aqui?
            }
            return;
        }
    }

}

1 answer

1

Only you know what the application should do if the user denies access to "EXTERNAL_STORAGE".

However, if the application depends on such authorization to function, what it should do is to present a message, to inform it, and end the application with finish().

Note: To access the gallery no permission is required.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.