ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Permissões

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
SegundoMeireles
Novato
Novato


Registrado: Quarta-Feira, 6 de Fevereiro de 2019
Mensagens: 15

MensagemEnviada: Ter Abr 02, 2019 8:20 am    Assunto: Permissões Responder com Citação

Como solicito uma permissão de chamada (call_phone) e tempo de execução?
Quando o aplicativo já está instalado no Android e existe uma permissão recente, o sistema dá erro, mesmo estando no Manifest. Gera uma mensagem de erro. E, o usuário precisa ir em configurações - Aplicativo - permissões e habilitar manualmente.

Gostaria de saber como habilitar essa permissão por comando (Delphi 10.2 Tokio)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Ter Abr 02, 2019 12:07 pm    Assunto: Responder com Citação

Acredito que vá depender da versão android, ou seja apartir da versão do android 6.0 é que é possivel fazer tal solicitação em tempo de execução, nas versões anterior a isso as permições são revalidada pelo manifest mesmo.

Apartir desta versão 6.0 as atualizações dos apk que incluiu novas permições deve fazer as solicitações em tempo de execução.

Ainda não vi um codigo escrito em delphi, mais não me pareceu ser tão dificil assim

Forma de checar se a permição estar ativada:
Código:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.WRITE_CALENDAR);


Forma de solicitar a permição:
Código:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}


Forma de tratar com a resposta do usuario
Código:
@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}


o resultado é algo parecido com isso:


link para leitura:
https://developer.android.com/training/permissions/requesting?hl=pt-BR

Achei este link com exemplo em delphi:
https://github.com/CarlosHe/AndroidPermission
_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
SegundoMeireles
Novato
Novato


Registrado: Quarta-Feira, 6 de Fevereiro de 2019
Mensagens: 15

MensagemEnviada: Qua Abr 03, 2019 11:16 am    Assunto: Responder com Citação

strak2012 escreveu:
Acredito que vá depender da versão android, ou seja apartir da versão do android 6.0 é que é possivel fazer tal solicitação em tempo de execução, nas versões anterior a isso as permições são revalidada pelo manifest mesmo.

Apartir desta versão 6.0 as atualizações dos apk que incluiu novas permições deve fazer as solicitações em tempo de execução.

Ainda não vi um codigo escrito em delphi, mais não me pareceu ser tão dificil assim

Forma de checar se a permição estar ativada:
Código:
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.WRITE_CALENDAR);


Forma de solicitar a permição:
Código:
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.

    } else {

        // No explanation needed, we can request the permission.

        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
}


Forma de tratar com a resposta do usuario
Código:
@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}


o resultado é algo parecido com isso:


link para leitura:
https://developer.android.com/training/permissions/requesting?hl=pt-BR

Achei este link com exemplo em delphi:
https://github.com/CarlosHe/AndroidPermission



strak2012, muitíssimo obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB