 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
SegundoMeireles Novato

Registrado: Quarta-Feira, 6 de Fevereiro de 2019 Mensagens: 15
|
Enviada: Ter Abr 02, 2019 8:20 am Assunto: Permissões |
|
|
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 |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Ter Abr 02, 2019 12:07 pm Assunto: |
|
|
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 |
|
 |
SegundoMeireles Novato

Registrado: Quarta-Feira, 6 de Fevereiro de 2019 Mensagens: 15
|
Enviada: Qua Abr 03, 2019 11:16 am Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|