Se você usar um recurso que exige permissões que não estão definidas no manifesto, você receberá uma SecurityException implacável.
É tão implacável que passa pela cláusula de pega.
O fato dessa exceção ocorrer significa que o manifesto e o código não coincidem, então o código deve ser corrigido!
Pode ser que você queira verificar permissões no seu código e no ramificação condicional.
Por exemplo, publicar como biblioteca.
Por isso, vamos te dar um método para obter uma lista de permissões e um método para verificar se as permissões que você procura existem no seu manifesto.
[code lang="java" light="true"]
/**
* Verifique se as permissões especificadas estão listadas no manifesto.
*
* @param verificarPermissão para investigar permissões
* @param contexto
* @return verdadeiro: listado / falso: não listado
*/
boolean public hasPermission(String checkPermission, contexto de contexto) {
if (checkPermission == null || contexto == null) {
Casos em que nenhum argumento é apresentado
retorne falso;
}
String[] requestedPermissions = getPermissionList(context);
if (requestedPermissions == null) {
Quando nenhuma permissão é definida no manifesto
retorne falso;
}
for (String str : requestedPermissions) {
if (str.equals(checkPermission)) {
Casos em que havia permissão para investigar
retorno verdadeiro;
}
}
Casos em que permissões para investigar não existiam
retorne falso;
}
/**
* Retorna uma lista de permissões listadas no manifesto.
*
* Lista de permissões @return
*/
public String[] getPermissionList(Contexto contexto) {
PackageManager Gerenciador de pacotes = contexto.getPackageManager();
PackageInfo packageInfo = null;
try {
packageInfo = packageManager.getPackageInfo(context.getPackageName(), PackageManager.GET_PERMISSIONS);
} catch (NameNotFoundException e) {
return null;
}
devolver encomendaInfo.solicitadoPermissões;
}
[/código]
Como funciona
[code lang="java" light="true"]
String checkPermisson = "android.permission.READ_PHONE_STATE";
if (hasPermission(checkPermisson, context)) {
Log.d("TAG", checkPermisson + " existem!");
} else {
Log.d("TAG", checkPermisson + " não existem!");
}
[/código]
Espero que isso ajude.