Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

OnRequestPermissionResult

Eu tentei fazer a validação da permission do RECEIVE_SMS porem não consegui, alguém tentou fazer e deu certo? No código abaixo esta como eu pensei em fazer porem na hora de passar a Activity como parâmetro não da certo.

if(ActivityCompat.checkSelfPermission(context, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(???, new String[] {Manifest.permission.RECEIVE_SMS},CODIGO_SMS);
5 respostas

Olá Tiago, tudo bem?

Esse código estaria dentro da ListaAlunosActivity? Se estiver, sugiro tentar o código abaixo:

 ActivityCompat.requestPermissions(ListaAlunosActivity.this, new String[] {Manifest.permission.RECEIVE_SMS},CODIGO_SMS);

Ola Rafael, tudo e com você? Não este código estaria dentro da classe SmsReceiver, gostaria de fazer assim para não fazer de forma manual ativando SMS no app.

Olá Tiago,

Eu fiz um teste aqui e acredito que isso possa ajudar, na classe ListaActivity coloquei o seguinte código:

MenuItem sms = menu.add("SMS");
        sms.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                Intent intentSms = new Intent(Intent.ACTION_VIEW);
                intentSms.setData(Uri.parse("sms:" + aluno.getTelefone()));
                if (ActivityCompat.checkSelfPermission(ListaAlunosActivity.this, Manifest.permission.RECEIVE_SMS) != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(ListaAlunosActivity.this, new String[]{Manifest.permission.RECEIVE_SMS}, 123);
                } else {
                    startActivity(intentSms);
                }
                return false;
            }
        });

Com o esse código ao pressionar SMS aparece a solicitação de permissão para o usuário ao tentar enviar um SMS.

Espero que funcione!

Abs

Olá pessoal,

Como que eu faço para solicitar a permissão apenas para receber SMS? Para enviar eu fiz e funcionou, exatamente como ensinado na aula. No entanto, suponhamos que eu queira solicitar a permissão apenas para receber o SMS, neste caso, a solicitação de permissão para receber o SMS não é acionada a partir de uma ação do usuário, como no caso de envio do SMS dentro da aplicação.

Eu tentei colocar o mesmo trecho que solicita a permissão dentro da classe SMSReceiver, mas não dispara. Ao testar o envio de SMS pelo emulador, a mensagem chega normalmente mas parece que minha classe SMSreceiver não executou.

Poderiam me dar uma luz, pls!

Valeu!

public class SMSReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if(ActivityCompat.checkSelfPermission(context, Manifest.permission.RECEIVE_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions((Activity) context,
                    new String[]{Manifest.permission.RECEIVE_SMS}, 123);
        } else {
            Toast.makeText(context, "Chegou um SMS!", Toast.LENGTH_SHORT).show();
        }
    }
}
solução!

Pessoal,

Esquece. Eu vi que no último exercício minha dúvida é respondida. A solução é solicitar a permissão na Activity principal e então a permissão será solicitada ao usuário logo após a aplicação ser iniciada.

Valeu!