Ao ligar o telefone, é solicitado que você digite o PIN do SIM - uma boa medida de segurança, para evitar que "estranhos" causem custos. Agora, o mesmo se aplica ao retornar do modo avião: é preciso inserir o PIN do SIM novamente. O que torna inúteis alguns economizadores de energia: se um aplicativo, por exemplo, entra no modo avião com perda de sinal (consulte: O que é o modo de espera do celular e como posso evitar que ele coma minha bateria? ), Não seria possível retornar à operação normal sem a interação do usuário .
Estou procurando uma maneira de desativar seletivamente : Tenha a solicitação do PIN ativa ao ligar o dispositivo - mas não seja solicitado o PIN do SIM ao retornar do modo avião.
Por favor, não confunda isso com "proteção de teclado": não estou perguntando sobre o bloqueio de tela (PIN / padrão / senha). Aqui eu conheço o caminho, pois há uma API para uso dos aplicativos (para que eu possa, por exemplo, desativar temporariamente isso com o Tasker ).
Sei que isso funciona com dispositivos Samsung - mas de preferência quero uma solução independente de dispositivo que funcione para todos os fabricantes.
Respostas:
AVISO LEGAL
GAMBIARRA
Encontrei uma solução alternativa para o problema que está funcionando perfeitamente em um Samsung Galaxy S2 com o Cyanogenmod 10.2 e o Dorimanx Kernel 9.41 instalados. Os passos necessários são os seguintes:
Tenha certeza de que seu dispositivo é roteado.
Baixe e instale o Xposed Framework Installer .
Quando o Xposed solicitar root em qualquer lugar no futuro próximo, conceda-o .
Abra o aplicativo e clique em
Framework
-Tab.Clique em
Install/Update
.Reinicie .
Baixe e instale o Jelly Bean 4.x Airplane Mode Helper .
Abra
Xposed Framework Installer
-App novamente e selecioneModules
.Marque (ativo)
Jelly Bean 4.x Airplane Mode Helper
.Reinicie .
Aberto
Jelly Bean 4.x Airplane Mode Helper
.Marque (ativo) Ativado .
Reinicie .
É isso aí! O modo avião deve funcionar novamente como nas versões anteriores do Android e não solicita mais o PIN do SIM ao ser desligado. No entanto, ele ainda é inicializado, mantendo o cartão SIM seguro. Eu configurei um procedimento automatizado de economia de bateria com os Perfis de localização do Llama semelhantes ao descrito aqui (Thx um monte, Izzy) e está funcionando perfeitamente.
Boa sorte pessoal!
fonte
A resposta está na fonte ... parece que a propriedade para solicitar o bloqueio de pinos está embutida em
build.prop
oudefault.prop
.Veja a referência encontrada na fonte TelephonyManager , entre as linhas 735 e 755. Por uma questão de brevidade,
A chave é
TelephonyProperties.PROPERTY_SIM_STATE
referida em outro lugar , entre as linhas 94 e 98.Depois de pesquisar o código fonte aqui na minha máquina, darei a você a idéia de quantas vezes esse método
getSimState
é chamado. Observe os nomes da fonte java para descobrir como ele é integrado ao Android, não apenas na camada de telefonia, em outro lugar.Esses nomes de arquivo dão uma pista, sim, na tela de bloqueio ...
Teoria
Isso requer raiz neste momento, invocando
adb shell
e chamandogetprop
e,setprop
para fazer isso, a única parte é essa, invocandoadb shell getprop
receberá de volta as informações pertinentes, como mostrado abaixoEssa propriedade sutil parece persistir dinamicamente em um armazenamento de propriedades de backup, a partir do momento da inicialização e é ajustada de acordo com o número de itens, serviços e sem mencionar a descida acidental do aparelho, que pode derrubar o cartão SIM. seu leitor que alteraria o estado do cartão para " não pronto " ou " desconhecido ". ( Ref: sistema / núcleo / include / cutils / properties.h e sistema / core / caixa de ferramentas / [ GetProp | SetProp ] .c)
Agora, nesse ponto, teoricamente, invocando setprop antes de bloquear a tela, ele pode ser contornado temporariamente, mas, novamente, isso pode ser redefinido pela camada de telefonia! Ainda não tentei isso! O que está levando a isso ...
Conclusão
A única maneira de desativar isso é desativar efetivamente a solicitação de bloqueio de pinos no cartão SIM real . É aí que o sinalizador de bit "mágico" é armazenado nele, no qual a camada RIL da telefonia o lê através da biblioteca proprietária da htc / samsung / qualcomm e isso impediria a proprietária da persistência da propriedade "PIN_REQUIRED" as camadas do Android.
Uma possível solução alternativa, apenas para desenvolvedores Android :)
Isso exigiria hackear e recompilar a fonte. Para o modo avião, ao entrar nesse modo e sair do modo avião, a propriedade pode ser dividida em duas, gsm.sim.state pode ser deixado como está, mas crie outra propriedade, algo como isto, gsm.sim.state. airplane.mode e atribua um valor ao longo das linhas de
SIM_STATE_PIN_NOT_REQUIRED
, e modifique a verificação do modo de avião, para ler essa propriedade e, se configurada para isso, não mostre a caixa de diálogo pin, caso contrário, como normalmente, solicite.fonte
Não tenho certeza de que você precisa fazer o que está tentando fazer.
Você pode, em vez disso:
Tasker
tarefas para ativar / desativar tudo o que o modo de ativação / desativaçãoAirplane
faz.Airplane
modo. Use suasTasker
tarefas.Pode ser necessário verificar se algum aplicativo está ativado para ligar automaticamente um rádio de hardware. Observe se um aplicativo tenta sincronizar em segundo plano ou o que for, eles podem tentar ativar os rádios desativados. Nesse caso, desative a capacidade desse aplicativo de ativar automaticamente seu Wi-Fi, por exemplo. Digo isso porque o
Airplane
modo certamente interrompeu as conexões WiFi inesperadas antes, mas não mais, se você tentar esta resposta.Você também pode configurar
Tasker
para sempre entrar noAirplane
modo no desligamento. Dessa forma, você veria o PIN Lock no momento da inicialização.fonte