Funções do Android

Um papel é um nome exclusivo no sistema associado a determinadas permissões e privilégios. Os apps podem solicitar a retenção de determinados papéis usando a API Android, especificamente invocando métodos na classe RoleManager.

Consulte a lista a seguir para conhecer as funções disponíveis e os requisitos correspondentes.

Função Requisitos
ASSISTENTE Pelo menos uma das seguintes opções:
  • O app tem uma atividade que realiza ações de assistência, de acordo com as informações sobre o contexto do usuário quando ele solicitou a assistência. Por exemplo, o nome do pacote do app atual em primeiro plano e as informações contextuais relacionadas.
  • O app tem um serviço de interação por voz sempre ativado, controlado pela permissão android.permission.BIND_VOICE_INTERACTION, que pode realizar reconhecimento de voz e hospedar sessões ativas de interação por voz. Além disso, o app tem uma flag explícita indicando que o serviço pode processar a ação de assistência.
NAVEGADOR Todas as opções:
  • O app tem uma atividade que pode invocar por meio de solicitações de intent implícitas, que exibe uma página da Web correspondente a um endereço http://.
  • O app precisa processar a navegação entre links. Ou seja, se o usuário estiver visualizando uma página da Web e clicar em um endereço http:// no texto, o app precisará exibir o conteúdo correspondente ao link selecionado sem intervenção do usuário.
  • O app precisa fornecer as informações de geolocalização atuais do dispositivo para páginas da Web quando elas são solicitadas e o usuário aprova a solicitação.
Telefone Todas as opções:
  • O app tem uma atividade, que pode ser invocada por meio de solicitações de intent implícitas, que fornece a interface do usuário em chamada enquanto o dispositivo está em uma chamada.
  • O app pode processar intents de chamadas recebidas, exibir as informações relacionadas à chamada (por exemplo, o número de telefone do autor da chamada) e permitir que o usuário atenda ou recuse a chamada.
  • O app oferece ao usuário um meio para iniciar chamadas e ver um histórico no dispositivo.
SMS Todas as opções:
  • O app atende a todos os requisitos para apps de SMS.
  • O app tem uma atividade que pode invocar por meio de solicitações de intent implícitas, que podem enviar uma mensagem para um número de telefone.
  • O app tem um serviço, controlado pela permissão android.permission.SEND_RESPOND_VIA_MESSAGE e invocável por intents implícitas, que pode entregar mensagens recebidas do app Telefone quando o usuário opta por responder por mensagem durante uma chamada recebida. O app pode entregar mensagens usando o próprio sistema de mensagens.
  • O app tem dois broadcast receivers, um pela permissão android.permission.BROADCAST_SMS e outro controlado pela permissão android.permission.BROADCAST_WAP_PUSH, que podem detectar mensagens SMS e MMS de texto enviadas ao dispositivo, respectivamente. O app é responsável por gravar as mensagens para o provedor de SMS e notificar os usuários.
EMERGÊNCIA Todas as opções:
  • O app é um app do sistema .
  • O app tem uma atividade que apresenta as informações de emergência do usuário. Qualquer pessoa pode navegar até essa tela pelo botão de emergência da atividade do discador de emergência.
PÁGINA INICIAL O app tem uma atividade que pode iniciar a tela inicial quando o usuário pressiona o botão home. A tela inicial precisa mostrar ícones e widgets do app, além de oferecer suporte à navegação com base em botões ou gestos, como deslizar para cima para ver todos os apps.
CALL_REDIRECTION O app tem um serviço, controlado pela permissão android.permission.BIND_CALL_REDIRECTION_SERVICE, a que o framework de telecomunicações pode se vincular. O serviço recebe o número de telefone de saída do framework de telecomunicações e executa uma das seguintes ações:
  • Permitir que a chamada seja feita no estado em que se encontra.
  • Mude o número de saída para rotear com um número de proxy.
  • Cancelar a ligação.
TELA DE CHAMADA O app tem um serviço, controlado pela permissão android.permission.BIND_SCREENING_SERVICE, que executa duas funções:
  1. Bloqueio/filtragem de chamadas:o serviço pode escolher quais chamadas devem ser enviadas para o app discador do telefone (e possivelmente tocar, considerando o Não perturbe/volume) e quais devem ser enviadas silenciosamente para o correio de voz.
  2. Identificação de chamada: o serviço pode identificar e exibir informações sobre uma chamada por meio de uma interface do usuário.
GALERIA DO SISTEMA Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app oferece uma IU para que os usuários armazenem, organizem e exibam vídeos e imagens.
SYSTEM_AUTOMOTIVE_CLUSTER (em inglês) Todas as opções:
  • É um app do sistema no Automotive.
  • Somente OEMs podem conceder essa função ao app.
  • O app oferece funcionalidade para a tela de um cluster automotivo (normalmente adjacente ao volante) para que os usuários atendam ligações e acessem listas de contatos e registros de chamadas.
COMPANION_DEVICE_WATCH (em inglês) O app pode fazer solicitações para ser associado e gerenciar um dispositivo de relógio (usando a API fornecida pela classe CompanionDeviceManager). Quando o relógio e o app estiverem conectados pela interface fornecida pelo app, os usuários poderão gerenciar o relógio pelo app, incluindo a sincronização de contatos e agenda e o gerenciamento de notificações e chamadas telefônicas.
SYSTEM_AUTOMOTIVE_PROJECTION (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app permite que a tela do smartphone seja projetada na tela do veículo. Ele permite que os motoristas acessem e controlem apps em smartphones Android, incluindo músicas, navegação, ligações e Pesquisa Google, usando mecanismos de entrada no veículo, incluindo toque, controles do volante e comandos de voz.
SYSTEM_SHELL (em inglês) Todas as opções:
  • Ele é um app do sistema que recebe o UID Process.SHELL_UID.
  • Somente OEMs podem conceder essa função ao app.
  • O app oferece uma interface que funciona no nível da linha de comando para que os usuários possam interagir com o SO Android. Por exemplo, exibir o conteúdo de uma pasta ou iniciar apps. Os comandos do shell podem ser executados programaticamente por apps (desde que as permissões necessárias tenham sido concedidas) ou pela ferramenta ADB.
SYSTEM_Contacts (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app oferece uma interface para os usuários gerenciarem contatos, por exemplo, visualizar, compartilhar, adicionar, remover ou pesquisar um contato. O app atualiza o Provedor de contatos quando o usuário atualiza os contatos. Os usuários também podem ligar, enviar e-mails ou enviar mensagens de texto para seus contatos pelo app.
SYSTEM_SPEECH_RECOGNIZER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O aplicativo oferece um serviço que realiza reconhecimento de fala.
  • Quando o app recebe streams de microfone ao vivo de outro app para reconhecimento de fala, ele atribui corretamente o uso do microfone ao app de chamada e atualiza as estatísticas de operação do app.
SYSTEM_WIFI_COEX_MANAGER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app tem um serviço que define dinamicamente uma lista de canais Wi-Fi que o dispositivo precisa evitar usar devido à interferência da rede celular.
SYSTEM_WELLBEING (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app precisa oferecer funcionalidades para reduzir as distrações e mostrar estatísticas sobre o uso do dispositivo (por exemplo, o tempo de tela por semana).
SYSTEM_TELEVISION_notification_HANDLER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app precisa mostrar notificações de alerta aos usuários em dispositivos de TV. O app também precisa mostrar as notificações ativas atuais quando a intent android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL for enviada (pela SystemUI).
SYSTEM_COMPANION_DEVICE_PROVIDER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app precisa detectar dispositivos periféricos nas proximidades. Ele precisa ter uma interface em que o usuário possa confirmar que determinado dispositivo periférico precisa ser associado e gerenciado por um app. Após a confirmação, o app de gerenciamento concede ao app associado permissão para acessar o dispositivo periférico (por exemplo, nome, endereço, classe e estado de vinculação) e pode iniciar o processo de vinculação.
SYSTEM_DOCUMENT_MANAGER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app tem uma atividade que permite aos usuários acessar documentos existentes e criar novos no dispositivo.
  • O app precisa atender a todos os requisitos descritos na seção do CDD 2.2.3. Software, sob o título [3.2.3.1/H-0-1].
SYSTEM_ACTIVITY_RECOGNIZER (em inglês) Todas as opções:
SYSTEM_UI (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app tem uma interface para os usuários interagirem com o smartphone. Por exemplo, a tela principal do smartphone, navegação, apps recentes, configurações rápidas, barra de notificações, tela de bloqueio e controle de volume.
SYSTEM_TELEVISION_REMOTE_SERVICE (em inglês) Todas as opções:
  • É um app do sistema no Android TV.
  • Somente OEMs podem conceder essa função ao app.
  • O app tem um serviço que pode se comunicar com o dispositivo HID de controle remoto da TV (por exemplo, por BLE), injetar eventos (por exemplo, cliques em botões) e enviar outros dados (por exemplo, stream de áudio de um microfone integrado ao controle remoto) para a plataforma.
SYSTEM_UI_INTELLIGENCE (link em inglês) Todas as opções:
  • Ser um serviço pré-instalado que fornece, por meio de APIs de framework (APIs públicas ou do sistema), um processador inteligente no dispositivo para recursos de interface do sistema (por exemplo, previsão e exibição dos próximos apps para os usuários).
  • O serviço precisa atender a todos os requisitos descritos na seção do CDD do Android, 9.8.6 Captura de conteúdo.
  • Ela não pode ter a permissão android.permission.INTERNET. Em vez disso, ele precisa acessar a Internet por meio de APIs bem definidas em um projeto de código aberto.
  • Ele não pode ser vinculado a apps, exceto para os seguintes apps do sistema: Bluetooth, Contatos, Mídia, Telefonia, SystemUI e componentes que fornecem APIs da Internet. Cada vinculação permitida precisa ser definida explicitamente por meio da configuração <allow-association> na configuração do sistema.
  • Ele não pode compartilhar dados com apps, a menos que haja uma ação direta do usuário (por exemplo, o usuário pressiona explicitamente um botão sempre que os dados são compartilhados).
SYSTEM_AMBIENT_AUDIO_INTELLIGENCE (em inglês) Todas as opções:
  • Idênticos às condições de SYSTEM_UI_INTELLIGENCE, exceto que o serviço pré-instalado fornece um processador inteligente no dispositivo para áudio ambiente (por exemplo, para reconhecer músicas que estejam tocando perto do dispositivo).
SYSTEM_AUDIO_INTELLIGENCE (em inglês) Todas as opções:
  • Idênticas às condições de SYSTEM_UI_INTELLIGENCE, exceto pelo fato de o serviço pré-instalado fornecer um processador inteligente no dispositivo para áudio (por exemplo, legendagem de vídeos, podcasts, chamadas telefônicas, videochamadas e mensagens de áudio).
SYSTEM_NOTE_INTELLIGENCE (em inglês) Todas as opções:
  • Idênticos às condições de SYSTEM_UI_INTELLIGENCE, exceto pelo fato de o serviço pré-instalado fornecer um processador inteligente no dispositivo para notificações (por exemplo, sugerindo respostas e ações para notificações de mensagens).
SYSTEM_TEXT_INTELLIGENCE (em inglês) Todas as opções:
  • Idênticas às condições de SYSTEM_UI_INTELLIGENCE, exceto pelo fato de o serviço pré-instalado fornecer um processador inteligente no dispositivo para texto (por exemplo, oferecendo tradução em tempo real ou preenchimento automático).
SYSTEM_VISUAL_INTELLIGENCE (em inglês) Todas as opções:
  • Idênticos às condições de SYSTEM_UI_INTELLIGENCE, exceto que o serviço pré-instalado fornece um processador inteligente no dispositivo para recursos visuais que envolvem a análise de dados da câmera. Por exemplo, manter a tela do smartphone ativa enquanto o usuário está olhando para ela ou determinar a orientação ideal da tela com base na orientação do rosto do usuário da câmera frontal do dispositivo.
COMPANION_DEVICE_APP_STREAMING (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app pode criar e gerenciar canais de comunicação com dispositivos conectados para trocar dados. O app e os dispositivos conectados precisam se autenticar com êxito (por exemplo, comprovando o conhecimento sobre chaves compartilhadas) para estabelecer esses canais de comunicação. Os canais de comunicação precisam ter proteção por criptografia.
  • O app pode enviar notificações do dispositivo local para o dispositivo conectado para permitir que o usuário aja sobre as notificações no dispositivo conectado.
  • Fazer streaming dos metadados necessários para o streaming de apps para o dispositivo conectado, como a lista de apps disponíveis no dispositivo local.
  • Capacidade de fazer streaming de apps do dispositivo local para o dispositivo conectado depois que o usuário tiver indicado a preferência por isso com consentimento explícito (no smartphone ou no dispositivo conectado).
  • Capacidade de reproduzir (injetar) eventos que acontecem em um app transmitido em um dispositivo conectado de volta no dispositivo local. Por exemplo, a repetição de um evento de toque no tablet nas mesmas coordenadas no smartphone.
  • O app pode substituir o stream do microfone do dispositivo local pelo stream do microfone de um dispositivo conectado enquanto um app de streaming estiver usando o microfone.
  • O app captura o áudio do dispositivo e o transmite para o dispositivo conectado.
  • Precisa bloquear o stream da câmera do dispositivo local enquanto um app de streaming estiver usando a câmera.
  • Precisa verificar a integridade do build do SO do dispositivo conectado (por exemplo, usando o atestado do dispositivo, como em VerifiedBootState).
  • Faça streaming apenas de apps em que haja apenas uma conta correspondente no registro de contas do dispositivo (por exemplo, o AccountManager no Android) em ambos os dispositivos. Se esse não for o caso, o streaming precisará ser autorizado com um código único mostrado no dispositivo de origem e inserido no dispositivo conectado. No caso de dispositivos compatíveis com vários usuários (e não várias contas) com o mesmo isolamento de dados confiável, como no multiusuário Android, um usuário é contabilizado como um dispositivo.
  • precisa parar o streaming e se desconectar de um dispositivo conectado imediatamente se a autenticação da conta no dispositivo conectado expirar ou for revogada.
  • Precisa verificar se um dispositivo conectado está dentro do alcance do Bluetooth do dispositivo local antes e durante o streaming.
  • É necessário desconectar as sessões de streaming de app em andamento se o usuário não interagir com o dispositivo conectado (por exemplo, teclado, tela touchscreen e mouse inativos) por cinco minutos. Os apps de streaming de vídeo estão isentos desse requisito.
  • Se o dispositivo de origem usar o Fator de conhecimento da tela de bloqueio (LSKF, na sigla em inglês), quando a tela estiver bloqueada, o app não poderá fazer streaming de apps para um dispositivo conectado, a menos que esse dispositivo tenha uma tela de bloqueio e esteja desbloqueado.
  • Se o dispositivo for gerenciado por um administrador, o app precisará respeitar as políticas definidas pelo administrador sobre ativar ou desativar o streaming de apps para dispositivos próximos (por exemplo, usando as configurações do DevicePolicyManager no Android).
  • Precisa garantir que a tela remota e todas as origens de eventos de entrada remota pertençam ao mesmo dispositivo lógico (por exemplo, uma tela remota e um teclado conectado) da perspectiva do usuário e que os eventos sejam roteados adequadamente.
  • O usuário precisa conseguir encerrar o streaming no dispositivo local, por exemplo, usando um botão em uma notificação persistente. Esse comportamento será controlado pela tela de bloqueio se o smartphone tiver um bloqueio de tela definido.
  • precisa mostrar uma affordance no dispositivo de origem quando o streaming estiver acontecendo em outro dispositivo, como um ícone na barra de status ou uma notificação persistente.
DEVICE_POLICY_MANAGEMENT (em inglês) Todas as opções:
  • Somente OEMs podem conceder essa função ao app. Os apps não podem solicitar essa função porque ela precisa ser concedida prontamente para o nome do pacote definido pelo OEM quando o dispositivo for enviado.
  • O app precisa provisionar um perfil gerenciado (proprietário do perfil) ou um dispositivo gerenciado (proprietário do dispositivo), incluindo o download/instalação do cliente do Device Policy apropriado para ser o proprietário do dispositivo/perfil, se necessário.
  • Opcionalmente, o app pode atualizar recursos dinamicamente, como strings e drawables usados para o gerenciamento de políticas do dispositivo.
  • O app pode ser um app do sistema pré-instalado ou ser transferido por download e instalado antes do provisionamento.
  • Nos casos de provisionamento do proprietário do perfil, quando o app detentor do papel é instalado em um determinado usuário Android, ele precisa ser instalado em todos os perfis aplicáveis a esse usuário.
SYSTEM_APP_PROTECTION_SERVICE (em inglês) Todas as opções:
  • O app é um app do sistema .
  • A única finalidade do app é detectar apps potencialmente nocivos (que podem colocar usuários, dados do usuário ou dispositivos em risco, como apps de cavalos de troia, phishing e spyware) ou software indesejado para dispositivos móveis.
  • O app precisa atender a todos os requisitos descritos na seção 9.8.6 do CDD do Android 9.8.6. dados do SO e do ambiente.
  • Ela não pode declarar a permissão normal android.permission.INTERNET. Em vez disso, ele precisa acessar a Internet por meio de APIs bem definidas em um projeto de código aberto.
  • Ela não pode ser vinculada a apps, exceto aos seguintes apps do sistema: Controlador de Permissão e componentes que fornecem APIs de Telefonia e Internet. Cada vinculação permitida precisa ser definida explicitamente por meio da configuração <allow-association> na configuração do sistema.
  • Ele não pode compartilhar dados com apps, a menos que haja uma ação direta do usuário (por exemplo, o usuário pressiona explicitamente um botão sempre que os dados são compartilhados).
SYSTEM_AUTOMOTIVE_AGENDA_SYNC_MANAGER Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • precisa transferir dados da agenda do smartphone iOS ou Android do usuário para o dispositivo Android Auto. O dispositivo Android Auto precisa armazenar esses dados de agenda no provedor de agenda.
  • O app precisa fornecer um componente de interface no smartphone que o usuário possa usar para ativar a sincronização de agendas e selecionar as agendas que serão sincronizadas. O app precisa fornecer no smartphone um componente de IU que o usuário possa usar para desativar a sincronização de agendas.
  • Deve funcionar sem uma conexão de Internet. Por exemplo, usando conexões diretas com ou sem fio.
NAVEGAÇÃO AUTOMÁTICA Todas as opções:
  • O app tem uma atividade que pode invocar por meio de solicitações de intent implícitas, que mostra a localização atual do usuário e os arredores.
  • O app tem uma atividade que pode invocar por meio de solicitações de intent implícitas, permitindo que o usuário navegue até uma geolocalização especificada.
  • Tem uma atividade que é iniciada no cluster de instrumentos quando o app mantém o foco da navegação. A atividade precisa mostrar a localização atual do usuário e os arredores dele e permitir que ele navegue até uma geolocalização especificada.
COMPANION_DEVICE_COMPUTER (em inglês) Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • Permita que os usuários espelhem notificações e acessem fotos e mídia do smartphone em um computador conectado.
SYSTEM_SETTINGS_INTELLIGENCE (em inglês) Pelo menos uma das seguintes opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • Tem um serviço que fornece recursos de inteligência para o app Configurações, como sugestões e pesquisa.
OBSERVAÇÕES Todas as opções:
COMPANION_DEVICE_GLASSES (link em inglês) O app pode fazer solicitações de associação e de gerenciamento de um dispositivo de óculos (usando a API fornecida pela classe CompanionDeviceManager). Depois que o dispositivo de óculos e o app forem conectados usando a IU fornecida pelo CDM, os usuários poderão gerenciar o dispositivo, concedendo acesso aos contatos e permissão para gerenciar notificações e ligações.
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING Todas as opções:
  • O app é um app do sistema .
  • Somente OEMs podem conceder essa função ao app.
  • O app pode criar e gerenciar canais de comunicação com dispositivos conectados para que os dispositivos possam trocar dados. O app e os dispositivos conectados precisam se autenticar com êxito (por exemplo, comprovando o conhecimento sobre chaves compartilhadas) para estabelecer esses canais de comunicação. Os canais de comunicação precisam ter proteção por criptografia.
  • O app pode enviar notificações do dispositivo local para o dispositivo conectado para permitir que o usuário aja sobre as notificações no dispositivo conectado.
  • Fazer streaming dos metadados necessários para o streaming de apps para o dispositivo conectado, como a lista de apps disponíveis no dispositivo local.
  • Capacidade de fazer streaming de apps do dispositivo local para o dispositivo conectado depois que o usuário tiver indicado a preferência por isso com consentimento explícito (no smartphone ou no dispositivo conectado).
  • Capacidade de reproduzir (injetar) eventos que acontecem em um app transmitido em um dispositivo conectado de volta no dispositivo local. Por exemplo, reproduzir um evento de toque no tablet nas mesmas coordenadas que no smartphone ou reproduzir um evento de entrada que ocorreu no dispositivo de óculos com a mesma semântica de entrada que no smartphone.
  • O app pode substituir o stream do microfone do dispositivo local pelo stream do microfone de um dispositivo conectado enquanto um app de streaming estiver usando o microfone.
  • O app captura o áudio do dispositivo e o transmite para o dispositivo conectado.
  • Precisa verificar a integridade do build do SO do dispositivo conectado (por exemplo, usando o atestado do dispositivo como em VerifiedBootState).
  • Faça streaming apenas de apps em que haja apenas uma conta correspondente no registro de contas do dispositivo (por exemplo, o AccountManager no Android) em ambos os dispositivos. Se esse não for o caso, o streaming precisará ser autorizado com um código único mostrado no dispositivo de origem e inserido no dispositivo conectado. No caso de dispositivos que oferecem suporte a vários usuários (e não várias contas) com o mesmo isolamento de dados garantido, como no multiusuário Android, um usuário é contabilizado como um dispositivo.
  • precisa parar o streaming e se desconectar de um dispositivo conectado imediatamente se a autenticação da conta no dispositivo conectado expirar ou for revogada.
  • Se o dispositivo de origem usar o Fator de conhecimento da tela de bloqueio (LSKF, na sigla em inglês), quando a tela estiver bloqueada, o app não poderá fazer streaming de apps para um dispositivo conectado, a menos que esse dispositivo tenha uma tela de bloqueio e esteja desbloqueado.
  • Se o dispositivo for gerenciado por um administrador, o app precisará respeitar as políticas definidas pelo administrador sobre ativar ou desativar o streaming para dispositivos próximos (por exemplo, usando as configurações do DevicePolicyManager no Android).
  • Precisa garantir que a tela remota e todas as origens de eventos de entrada remota pertençam ao mesmo dispositivo lógico (por exemplo, uma tela remota e um teclado conectado) da perspectiva do usuário e que os eventos sejam roteados adequadamente.
  • O usuário precisa conseguir encerrar o streaming no dispositivo local, por exemplo, usando um botão em uma notificação persistente. Esse comportamento será controlado pela tela de bloqueio se o smartphone tiver um bloqueio de tela definido.
  • precisa mostrar uma affordance no dispositivo de origem quando o streaming estiver acontecendo em outro dispositivo, como um ícone na barra de status ou uma notificação persistente.