Como ativar um recurso Smart Lock baseado em localização em dispositivos Huawei/Honor executando EMUI

Um tutorial sobre como replicar os recursos baseados em localização do Smart Lock do Google em dispositivos Huawei ou Honor executando EMUI.

Se você nunca teve um dispositivo Huawei ou Honor, provavelmente está olhando para o título e perguntando “hein?” Afinal, o Smart Lock é um recurso introduzido em Pirulito Android 5.0 para facilitar o acesso rápido ao seu dispositivo sob certas condições como localização, quando conectado a determinados dispositivos, no bolso ou ao reconhecer sua voz.

Normalmente, não vale a pena discutir esse recurso, visto que já se passaram mais de dois anos desde que o Lollipop foi lançado e o fato de que aproximadamente 65% de todos os dispositivos Android estão rodando no Android 5.0+. Suspeitamos que a proporção de usuários em nossos fóruns que executam pelo menos o Lollipop seja muito, muito maior, embora não tenhamos estatísticas exatas sobre isso. De qualquer forma, o recurso Smart Lock do Google se tornou tão comum entre os dispositivos Android que aplicativos de terceiros que oferecem essa funcionalidade

têm em grande parte estive abandonado, porque eles não veem sentido em competir com o recurso.

Mas há um conjunto de usuários que fica com uma versão castrada do Smart Lock: usuários com um Dispositivo Huawei ou Honor executando EMUI. Por alguma razão, a EMUI não oferece os mesmos recursos do Smart Lock que a maioria dos outros dispositivos Android 5.0+ oferece. Em vez disso, a EMUI só permite desbloquear automaticamente o seu dispositivo se estiver conectado a determinados dispositivos Bluetooth.

Embora certamente seja útil se você possui um dispositivo Bluetooth, como um smartwatch ou uma pulseira de fitness, nem todo mundo tem um dispositivo portátil sempre conectado ao smartphone. A exclusão do recurso Smart Lock do Google pela Huawei é claramente deliberada, porque mesmo se você ativar o Smart Lock como um “agente confiável” no Android, você não poderá realmente usar o recurso.

Basicamente, você está preso ao recurso “Smart” Lock da Huawei, que oferece menos recursos do que o Smart Lock do Google. Suas únicas opções como proprietário de um dispositivo Huawei/Honor são experimentar uma das muitas opções na Play Store que afirmam adicionar esse recurso (nenhum dos quais funcionou no meu dispositivo) ou fazer root no seu telefone e baixe um módulo Xposed. A falta de opções decentes para EMUI me levou a escrever este tutorial. Com um pouco da magia do Tasker e um plug-in chamado AutoTools, podemos desbloquear automaticamente qualquer dispositivo Huawei ou Honor com base na localização sem precisar de root.


Smart Lock para dispositivos Huawei/Honor

Existem apenas dois aplicativos necessários para colocar esse recurso em funcionamento. O primeiro é Tasker, a ferramenta de automação Android incrivelmente popular que nós do XDA frequentemente apresentamos para resolver problemas que vão dos mais mundanos aos incrivelmente complexos. Por US$ 2,99, pode parecer desnecessário comprar este aplicativo por algo tão simples, mas o valor que esse aplicativo pode oferecer é enorme, se você estiver disposto a assista a alguns tutoriais. Em seguida, você precisará da versão beta de um plug-in Tasker conhecido como Ferramentas automáticas. Este plug-in adiciona muitos recursos úteis ao kit de ferramentas nativo do Tasker e, em particular, precisaremos de uma função de AutoTools conhecida como Configurações seguras para atingir nosso objetivo.

O que faremos é modificar uma propriedade em nosso dispositivo que controla o cronômetro que o Android usa para determinar quando mostrar a tela de bloqueio após o tempo limite do telefone. Um “tempo limite” aqui se refere a quando a tela do seu telefone desliga após X minutos de inatividade ou quando o usuário desliga manualmente a tela pressionando o botão liga / desliga. Após um período de tempo definido (desde imediatamente após o dispositivo entrar no modo de suspensão até 30 minutos após entrar no modo de suspensão), o Android exibirá a tela de bloqueio.

O problema com esses dois recursos é que, por padrão, aumentar o temporizador de "bloqueio automático" pode ser potencialmente um problema de segurança, porque se seu dispositivo for deslizado dentro do intervalo de tempo em que a tela de bloqueio ainda não foi ativada, um ladrão terá acesso a todo o conteúdo do seu dispositivo. Para atenuar isso, o Android oferece uma opção “o botão liga / desliga bloqueia instantaneamente o dispositivo” para que você possa ativar imediatamente a tela de bloqueio pressionando o botão liga / desliga. No entanto, e especialmente se você definiu um tempo limite de tela curto, é fácil esquecer de fazer isso, então você ainda está aberto para ter seu dispositivo acessado por terceiros mal-intencionados se você acidentalmente deixar o dispositivo atingir o tempo limite em uma mesa ou em seu bolso sem pressionar manualmente o botão liga / desliga botão.

Portanto, nossa solução para esse problema é vincular um temporizador de "bloqueio automático" mais longo, não ao botão liga / desliga, que requer intervenção manual, mas sim à localização/WiFi. Dessa maneira, você pode aproveitar o uso do seu dispositivo sem uma tela de bloqueio no conforto da sua casa, mas tenha certeza de que o PIN/senha da tela de bloqueio estará sempre visível quando você estiver longe de casa. lar. Agora que explicamos o que estamos fazendo, veja como isso realmente é feito.


Tutorial

Conforme mencionado antes, modificaremos uma determinada propriedade do sistema. Esta propriedade é definida sob o Configurações. Classe segura com o nome lock_screen_lock_after_timeoute aceita valores inteiros em milissegundos. Para modificar esse valor, precisaremos conceder ao AutoTools uma permissão específica para que ele possa gravar nessas configurações sem precisar de acesso root.

No sistema de gerenciamento de permissões do Android, os aplicativos definem as permissões que desejam receber no arquivo de manifesto. Os usuários podem então conceder ou negar permissões na instalação (pré-Marshmallow) ou sob demanda (Marshmallow+). No entanto, existem certas permissões que os aplicativos não podem ser concedidos, mesmo que solicitem no Manifesto, como WRITE_SECURE_SETTINGS. Isso ocorre porque conceder a qualquer aplicativo uma permissão tão poderosa como essa daria ao aplicativo muito controle sobre o seu dispositivo.

Mas há uma solução alternativa que podemos usar para conceder a permissão WRITE_SECURE_SETTINGS a qualquer aplicativo que desejarmos. Usando ADB gerenciador de pacotes (pm) ferramenta, podemos conceder quase qualquer permissão a qualquer aplicativo que desejarmos (desde que o aplicativo solicite essa permissão no arquivo de manifesto).

A primeira coisa que você precisa fazer é instale o binário ADB no seu computador seguido pelo driver certo para o seu dispositivo. Em seguida, habilite a depuração USB nas opções do desenvolvedor (vá para Configurações -> Sobre o telefone e toque no número da versão 7 vezes, se ainda não o fez) e conecte seu telefone ao computador. Por fim, envie o seguinte comando depois de abrir um terminal:

adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS

Agora o AutoTools poderá alterar qualquer configuração global, segura ou de sistema no seu dispositivo. Existem várias maneiras de brincar com essas configurações e a lista de configurações disponíveis em cada categoria depende completamente do seu dispositivo e da construção do software, mas essa discussão é para outra tempo. De qualquer forma, continuaremos mostrando como usar o AutoTools para controlar o tempo limite da tela de bloqueio.

Passo 2 - Configurando o Tasker

Abra o Tasker e pressione o botão + ícone no canto inferior direito para criar um novo perfil. Nomeie seu novo perfil como "Bloqueio automático" ou o que você quiser, na verdade. Para o tipo de contexto que usaremos, selecione Estado. Vá para Rede -> WiFi conectado. Aqui, selecionaremos as redes WiFi que queremos colocar na lista branca para desbloquear automaticamente o dispositivo. Acerte o lupa ícone e selecione todas as redes WiFi que você deseja colocar na lista branca.

Opcional: Se você deseja criar um Smart Lock verdadeiramente baseado em localização (em vez de apenas baseado em redes WiFi), então você pode usar o contexto "Localização" no Tasker em vez de Estado -> Rede -> WiFi Conectado recurso. Observe que Tasker não cria cercas geográficas, então o consumo de bateria será pior com este método. Se quiser que o Tasker reaja a cercas geográficas com bateria mais eficiente, você precisará instalar o Localização automática plugar.

Volte e em seguida você será solicitado a criar uma tarefa. Digite qualquer nome (ou nenhum está adequado) para acessar a tela de criação de tarefas. aperte o + ícone na parte inferior central para adicionar uma nova ação. Vá para Plug-in -> AutoTools -> Configurações seguras. Acerte o lápis ícone para abrir a tela de configuração do AutoTools Secure Setting. Vá para Tela de bloqueio --> Bloqueio Automático e para o valor insira qualquer valor suficientemente alto, como '9001'. Este é o valor, em segundos, para o qual o AutoTools definirá o cronômetro automático da tela de bloqueio. Felizmente para nós, não precisamos mexer em definir manualmente um comando para modificar o valor lock_screen_lock_after_timeout, já que o desenvolvedor do AutoTools implementou esse recurso para nós em uma bela GUI.

Salve esta configuração pressionando o ícone da marca de seleção na parte superior, pressionando a tecla Voltar uma vez no Tasker e, finalmente, saindo da tela de criação de tarefas. Depois de fazer isso, Tasker manterá automaticamente seu dispositivo desbloqueado por um longo tempo enquanto você estiver em casa. Certifique-se de que "botão liga / desliga bloqueia instantaneamente o dispositivo" é desabilitado nas configurações de bloqueio seguro, caso contrário, quando você pressionar o botão liga / desliga em casa, a tela de bloqueio do seu telefone será ativada, o que não é o que você deseja!

Finalmente, precisaremos adicionar outra tarefa que é acionada quando saímos de qualquer uma das redes WiFi da lista branca. Na página principal do Tasker, pressão longa no Tarefa você acabou de criar e toque em adicionar tarefa de saída no menu pop-up. Dê um nome a esta tarefa e entre novamente na tela de criação de tarefa. Aqui, toque no + ícone e vá novamente para Plug-in -> AutoTools -> Configurações seguras. Na mesma opção de Bloqueio Automático, desta vez insira um valor de 0. Depois que você sair da sua rede WiFi, o Tasker não atrasará mais a exibição da tela de bloqueio após o tempo limite do telefone.

Opcional: Adicione uma segunda ação pressionando o botão + ícone, mas desta vez vá para Exibir -> Bloqueio do Sistema. Esta ação bloqueará automaticamente seu telefone quando você sair do alcance de suas redes WiFi na lista branca, apenas no caso de você ter um tempo limite de exibição muito longo e seu telefone nunca dormir quando você sair de casa. Se você fizer isso, terá que tornar Tasker um administrador do dispositivo acessando Configurações. Basta procurar a opção e conceder permissão a Tasker.

E é isso! Embora este tutorial pareça longo, na verdade o script Tasker em si é muito simples. Um total geral de até 3 ações é necessário para ativar esse recurso. Experimente e diga-nos como funciona para você!