Permissões em Tempo de Execução (Runtime Permissions)

Definição

Permissões em Tempo de Execução (Runtime Permissions) são permissões que um aplicativo solicita durante o uso, e não apenas no momento da instalação. Esse modelo foi adotado para que o usuário tenha mais controle sobre o acesso a recursos sensíveis do dispositivo, como câmera, localização, microfone, contatos, entre outros.

Desde o Android 6.0 (API 23) e iOS 10, esse comportamento se tornou padrão para proteger a privacidade dos usuários. Ao invés de conceder tudo na instalação, o sistema solicita permissões no momento em que o recurso é necessário.

Objetivos das Permissões em Tempo de Execução

  • Reforçar a segurança e a privacidade: o usuário precisa autorizar explicitamente o acesso a dados e funcionalidades sensíveis.
  • Evitar abusos por parte dos apps: impede que funcionalidades sejam acessadas sem justificativa ou consentimento.
  • Permitir decisões contextuais: o app pode solicitar a permissão apenas quando ela for realmente necessária.

Exemplo prático (Java — Android)

Abaixo, um exemplo em Java que demonstra como solicitar permissão para acessar a câmera no Android:

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_CAMERA_PERMISSION = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {
            // Solicita a permissão em tempo de execução
            ActivityCompat.requestPermissions(
                this,
                new String[]{Manifest.permission.CAMERA},
                REQUEST_CAMERA_PERMISSION
            );
        } else {
            acessarCamera();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == REQUEST_CAMERA_PERMISSION) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                acessarCamera();
            } else {
                Toast.makeText(this, "Permissão negada para usar a câmera", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void acessarCamera() {
        Toast.makeText(this, "Câmera acessada com sucesso", Toast.LENGTH_SHORT).show();
        // Aqui você pode abrir a câmera ou iniciar a captura
    }
}

O ciclo de solicitação de permissões

[App tenta acessar recurso sensível]
    --> Verifica se a permissão já foi concedida
        --> Se sim: executa normalmente
        --> Se não: solicita permissão ao usuário

[Usuário responde]
    --> Se aprovada: continua com a funcionalidade
    --> Se negada: informa o usuário e trata o caso

Esse fluxo permite que o aplicativo reaja de forma segura e controlada às decisões do usuário.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com