Sistema de Permissões em Tempo de Execução, Android M

O sistema de permissões do Android mantém todo o sistema / framework consistente fazendo com que APPs que necessitem acesso a dados não produzidos por elas (dentro do sandbox dedicado a elas) ou a funcionalidades não disponíveis nelas definam permissões para que esse consumo seja possível. Dentre os grupos de permissões, dois grupos são mais comuns: Grupo de Permissões Normais e Grupo de Permissões perigosas.

Com o release do Android Marshmallow o sistema de permissões no Android que tinha o formato de apresentar todos os grupos de permissões necessários logo no momento de instalação da APP (direto na PlayStore):

 

Além de acelerar o processo de instalação da APP por parte do user no device dele, esse novo modelo de permissões que funciona somente quando a versão do Android é igual ou superior a 6 (Marshmallow) e ao mesmo tempo o targetSdkVersion da APP é igual ou superior a API 23 traz também um esforço extra por parte do developer Android que terá de solicitar cada permissão necessária (podendo ser mais de uma em uma só solicitação) para a execução de funcionalidades que utilizam entidades que somente com algumas permissões perigosas liberadas podem ser acessadas. Isso assumindo que o developer está seguindo as “Permissions Best Practices” indicadas na documentação e não requisitando todas as permissões necessárias logo na inicialização da APP.

Abaixo vamos seguir com a utilização do novo sistema de permissões em tempo de execução demonstrando parte do código necessário em um exemplo: PermissionTarget23 project.

Começando pelo AndroidManifest.xml, temos as declarações de permissões como já utilizado no modelo antigo:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.thiengo.permissiontarget23">

    <!-- NORMALS PERMISSIONS -->
    <uses-permission android:name="android.permission.INTERNET"/>

    <!-- DANGEROUS PERMISSIONS -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>



https://www.thiengo.com.br/sistema-de-permissoes-em-tempo-de-execucao-android-m

Deixe um comentário