3
respostas

Implementação método onRequestPermissionsResult

Gostaria de saber como ficaria a implementação do método onRequestPermissionResult, pois no exemplo da aula, como ficaria para mim realizar a chamada telefônica logo depois do usuário ter aceito o pedido de permissão, tendo em vista que não teria mais acesso ao itemLigar fora do método original setOnMenuItemClickListener ? Não ficou muito claro pra mim a utilidade desse novo método auxiliar para a chamada imediata logo após o aceite do usuário.

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 123){
            //faz a ligação
        }else if(requestCode == 124){
            //faz o envio do SMS por exemplo
        }
    }
3 respostas

Fala ai Clecio, de boa ?

Algo que poderia ser feito é salvar o telefone do aluno ou a própria intent para ai sim, inicializar-la, algo assim:


private Intent fazLigacao;


    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 123){
            startActivity(fazLigacao);
        }else if(requestCode == 124){
            //faz o envio do SMS por exemplo
        }
    }

No caso, eu retiraria a parte do código que faz a ligação:

@Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                if (ActivityCompat.checkSelfPermission(ListaAlunosActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(ListaAlunosActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 123);
                }else{
                    Intent intentLigar = new Intent(Intent.ACTION_CALL);
                    intentLigar.setData(Uri.parse("tel:" + aluno.getTelefone()));
                    startActivity(intentLigar);
                }
                return false;
            }

E daí apenas o chamaria dentro dos demais métodos ? Não compreendi ainda a idéia.


private Intent intentLigar;

@Override
            public boolean onMenuItemClick(MenuItem menuItem) {

  intentLigar = new Intent(Intent.ACTION_CALL);
                    intentLigar.setData(Uri.parse("tel:" + aluno.getTelefone()));
                if (ActivityCompat.checkSelfPermission(ListaAlunosActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(ListaAlunosActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 123);
                }else{

                    startActivity(intentLigar);
                }
                return false;
            }



    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == 123){
            startActivity(intentLigar);
        }else if(requestCode == 124){
            //faz o envio do SMS por exemplo
        }
    }

Acredito que algo assim resolva o problema.