disattivare la richiesta PIN dopo la modalità aereo


10

Quando si accende il telefono, per impostazione predefinita viene richiesto di inserire il PIN della SIM, che è una buona misura di sicurezza, per evitare che "estranei" causino costi. Ora lo stesso vale quando si ritorna dalla modalità aereo: è necessario inserire nuovamente il PIN SIM. Ciò rende inutili alcuni risparmiatori di energia: se un'app, ad esempio, entra in modalità aereo in caso di perdita del segnale (vedi: Cos'è lo standby di Cell e come posso impedirgli di consumare la batteria? ), Non sarebbe in grado di tornare al normale funzionamento senza l'interazione dell'utente .

Sto cercando un modo per disabilitarlo selettivamente : attiva la richiesta PIN all'accensione del dispositivo, ma non ti viene chiesto il PIN SIM al ritorno dalla modalità aereo.

Si prega di non confondere questo con "blocco tastiera": non sto chiedendo il blocco dello schermo (PIN / sequenza / password). Qui conosco il mio modo di aggirare, poiché esiste un'API per le app da utilizzare (quindi ad esempio posso disattivarla temporaneamente con Tasker ).

So che funziona con i dispositivi Samsung, ma preferisco una soluzione indipendente dal dispositivo che funzioni per tutti i produttori.


2
Veramente! Permettetemi di citare la domanda precedente: sto cercando un modo per disabilitarlo selettivamente , non per disabilitare completamente il controllo. So che può essere completamente disabilitato (che è quello che attualmente uso) - ma voglio disabilitarlo solo per tornare dalla modalità aereo, non per l'avvio del dispositivo.
Izzy

Risposte:


1

NEGAZIONE

  1. Questo ha bisogno di root. Non c'è modo di aggirare quello.
  2. Sul dispositivo deve essere installato Android 4.1+
  3. Questa soluzione alternativa potrebbe essere troppo avanzata per alcuni utenti. Prova ad applicarlo solo quando sai cosa stai facendo.
  4. Non sono responsabile se qualcosa va storto o se Ragnarök inizia durante il processo. Lo stai facendo a tuo rischio e pericolo. Procedi con cautela.
  5. Non sono l'autore o altrimenti affiliato con nessuna delle mod menzionate. Ho semplicemente trovato questo e lo condivido a tuo vantaggio.

SOLUZIONE

Ho trovato una soluzione alternativa al problema che funziona magnificamente su un Samsung Galaxy S2 con Cyanogenmod 10.2 e Dorimanx Kernel 9.41 installati. I passaggi necessari sono i seguenti:

  1. Assicurati che il tuo dispositivo sia rootato.

  2. Scarica e installa Xposed Framework Installer .

  3. Quando Xposed chiede radice qualsiasi punto in un prossimo futuro, concederlo .

  4. Apri l'app e fai clic su Framework-Tab.

  5. Fare clic Install/Update.

  6. Riavvio .

  7. Scarica e installa Jelly Bean 4.x Airplane Mode Helper .

  8. Apri di Xposed Framework Installernuovo -App e seleziona Modules.

  9. Spuntare (imposta attivo) Jelly Bean 4.x Airplane Mode Helper.

  10. Riavvio .

  11. Aprire Jelly Bean 4.x Airplane Mode Helper.

  12. Selezionare (imposta attivo) Abilitato .

  13. Riavvio .

Questo è tutto! La Modalità aereo dovrebbe funzionare di nuovo come nelle precedenti versioni di Android e non richiede più il PIN SIM quando viene spenta. Lo fa comunque all'avvio, mantenendo così la tua SIM-Card un po 'sicura. Ho impostato una procedura automatizzata di risparmio della batteria con i profili di posizione della lama simili a quella descritta qui (Grazie mille, Izzy) e funziona perfettamente.

Buona fortuna gente!


1
Grazie mille per la tua risposta! L'ho appena modificato per migliorare la formattazione (elenchi) e ho aggiunto il fatto che richiede JB +. Dato che i miei dispositivi non eseguono ancora JB, non riesco a testarlo, ma sospetto che potresti aver perso la parte più importante della domanda (almeno non me ne accenni): chiede il PIN SIM quando ritorni dall'aereo modalità - o può essere saltato in questo modo?
Izzy

1
State tranquilli, ho riscontrato completamente il vostro problema e la mia risposta è esattamente quello che stavate cercando;) - non richiede il PIN SIM al ritorno dalla modalità aereo, ma lo fa comunque all'avvio. Pertanto, la tua sicurezza viene mantenuta ma lo script di risparmio della batteria funziona di nuovo. Grazie per l'aggiornamento della formattazione!
FuzzyQ,

Ho aggiunto le informazioni più importanti come avevi ragione - mi sono completamente dimenticato di menzionare il fatto che questo in realtà rimuove la necessità di sbloccare nuovamente la SIM dopo la modalità aereo.
FuzzyQ,

1
In questo caso, è esattamente quello che stavo cercando: i lavori automatizzati funzionano senza intervento manuale, ma il dispositivo è ancora protetto quando si tratta di "inizializzazione" (ovvero dopo un avvio). Eccellente! L'ho votato per ora. Dato che non riesco nemmeno a testare la soluzione di t0mm13b, devo fidarmi di te riguardo al mio "accetta": questa sembra la soluzione più promettente (e gratuita!) Finora, sebbene limitata a JB +.
Izzy

Sai, è divertente come ci sono arrivato in primo luogo. Ho trovato la tua domanda e risposta al problema di standby della cella e presto ho finito con il problema della modalità aereo-SIM-PIN. Da quando uso Xposed Framework da un po 'di tempo, ho avuto l'idea di cercare un modulo xposed che avrebbe affrontato il problema. :)
FuzzyQ,

8

La risposta sta nella fonte ... sembra che la proprietà per richiedere il pin-lock sia integrata in build.propo default.prop.

Dai un'occhiata al riferimento trovato nella fonte di TelephonyManager , tra le righe 735 e 755. Per brevità,

public int getSimState() {
        String prop = SystemProperties.get(TelephonyProperties.PROPERTY_SIM_STATE);
        if ("ABSENT".equals(prop)) {
            return SIM_STATE_ABSENT;
        }
        else if ("PIN_REQUIRED".equals(prop)) {
            return SIM_STATE_PIN_REQUIRED;
        }
        else if ("PUK_REQUIRED".equals(prop)) {
            return SIM_STATE_PUK_REQUIRED;
        }
        else if ("NETWORK_LOCKED".equals(prop)) {
            return SIM_STATE_NETWORK_LOCKED;
        }
        else if ("READY".equals(prop)) {
            return SIM_STATE_READY;
        }
        else {
            return SIM_STATE_UNKNOWN;
        }
    }

La chiave è quella TelephonyProperties.PROPERTY_SIM_STATEmenzionata altrove , tra le righe 94 e 98.

//****** SIM Card
/**
 * One of <code>"UNKNOWN"</code> <code>"ABSENT"</code> <code>"PIN_REQUIRED"</code>
 * <code>"PUK_REQUIRED"</code> <code>"NETWORK_LOCKED"</code> or <code>"READY"</code>
 */
static String PROPERTY_SIM_STATE = "gsm.sim.state";

Dopo aver cercato attraverso il codice sorgente qui sulla mia macchina, ti darò l'idea di quanto spesso getSimStateviene chiamato questo metodo , notando i nomi del sorgente Java per capire come è integrato in Android, non solo nel livello di telefonia ma altrove.

services/java/com/android/server/am/BatteryStatsService.java 219:      int simState = TelephonyManager.getDefault().getSimState();

telephony/java/android/telephony/TelephonyManager.java 523:    public int getSimState() { 551:     * @see #getSimState 562:     * @see getSimState

policy/src/com/android/internal/policy/impl/KeyguardUpdateMonitor.java 478:    public IccCard.State getSimState() {

policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java 545:            final IccCard.State state = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockPatternKeyguardViewProperties.java 57:        final IccCard.State simState = mUpdateMonitor.getSimState();

policy/src/com/android/internal/policy/impl/LockScreen.java 273:       mStatus = getCurrentStatus(updateMonitor.getSimState());

policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java 173:                && (mUpdateMonitor.getSimState() == IccCard.State.ABSENT); 217:                final IccCard.State simState = mUpdateMonitor.getSimState(); 469:                && (mUpdateMonitor.getSimState() != IccCard.State.PUK_REQUIRED)) { 512:   secure = mUpdateMonitor.getSimState() == IccCard.State.PIN_REQUIRED 513:                            || mUpdateMonitor.getSimState() == IccCard.State.PUK_REQUIRED; 643:        final IccCard.State simState = mUpdateMonitor.getSimState(); 662:        final IccCard.State simState
= mUpdateMonitor.getSimState();

policy/tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java 49:        public IccCard.State getSimState() {

Questi nomi di file danno un indizio, sì, nella schermata di blocco ...

Teoria

Ciò richiede root a questo punto, invocando adb shelle chiamando getprope setpropper fare ciò, l'unica parte è questa, invocando

adb shell getprop otterrà le informazioni pertinenti come mostrato di seguito

sh-4.1# getprop
[gsm.sim.state]: [READY]

Questa proprietà sottile sembra essere persistentemente dinamicamente in un negozio di proprietà di supporto, dal momento dell'accensione e viene regolata di conseguenza, in base al numero di cose, al servizio e per non parlare di far cadere accidentalmente il ricevitore che potrebbe far cadere la sim-card da il suo lettore che cambierebbe lo stato della carta in " non pronto " o " sconosciuto ". ( ref: system / core / include / cutils / properties.h e system / core / toolbox / [ getprop | setprop ] .c)

Ora a questo punto, teoricamente, invocando setprop prima di bloccare lo schermo, potrebbe essere aggirato temporaneamente, ma poi potrebbe essere ripristinato dallo strato di telefonia! Non ci ho provato! Il che sta portando a questo ...

Conclusione

L' unico modo per disattivarlo è disabilitare in modo efficace la richiesta di blocco dei pin sulla scheda SIM effettiva . È qui che il bit-flag "magico" è memorizzato su quello, in cui il livello RIL della telefonia lo legge attraverso la libreria proprietaria htc / samsung / qualcomm, e ciò impedirebbe la proprietà del persistere della proprietà "PIN_REQUIRED" fino a i livelli di Android.

Una possibile soluzione alternativa, solo per sviluppatori Android :)

Ciò richiederebbe l'hacking e la ricompilazione della fonte. Per la modalità aereo, quando si entra in quella modalità e si esce dalla modalità aereo, la proprietà potrebbe essere suddivisa, in due, gsm.sim.state può essere lasciato così com'è, ma escogitare un'altra proprietà, qualcosa del genere, gsm.sim.state. airplane.mode e assegnare un valore lungo le linee di SIM_STATE_PIN_NOT_REQUIRED, e modificare il controllo della modalità aereo, per leggere quella proprietà e, se impostato su quello, non mostrare la finestra di dialogo pin, altrimenti come al solito, lo richiede.


Grazie per la spiegazione dettagliata, t0mm13b! Quindi dobbiamo supporre che Samsung e LG abbiano modificato il codice in tutti i luoghi che hai menzionato - se i rapporti che ho ricevuto sui dispositivi Samsung e LG (dove le persone dicevano che potevano disabilitare il PIN della SIM controllando separatamente, come descritto nella mia domanda) sono corretta?
Izzy

Grazie ancora! Se potessi dire se trovare quell'impostazione in CM, e da quando è lì, questo sarebbe già di grande aiuto - poiché CM è disponibile per molti dispositivi :) I miei dispositivi eseguono tutti CM 7.x, quindi io potrei verificare - anche se non ho ancora incontrato una tale impostazione (motivo per cui sto chiedendo il posto dove cercare;)
Izzy

Prova Impostazioni> Impostazioni di posizione e sicurezza, Blocco scheda SIM?
t0mm13b,

Ho dovuto eliminare il commento che era una risposta alla tua domanda all'interno dello stesso, il suo presente nelle fonti AOSP, (la prima volta che l'ho visto come la mia scheda SIM è già sbloccata e comunque libera dal blocco della richiesta pin)
t0mm13b

1
Non confermato per Gingerbread (CM7.2 sul mio Motorola Droid² / Milestone²). È vero, il PIN della SIM può essere configurato nel luogo descritto, ma solo on / off, non selettivo per "solo all'accensione". Scusate.
Izzy

3

Non sono sicuro che tu debba fare quello che stai cercando di fare.

Potresti invece:

  • Imposta due Taskerattività per attivare / disattivare tutto ciò che Airplanefa la modalità di abilitazione / disabilitazione .
  • Non usare mai realmente la tua Airplanemodalità. Usa i tuoi Taskercompiti.

Potrebbe essere necessario vedere se alcune app sono abilitate per accendere automaticamente una radio hardware. Guarda se un'app tenta di eseguire la sincronizzazione in background o altro, potrebbe provare ad attivare le radio disabilitate. In tal caso, disabilita la capacità di quell'app di attivare automaticamente il tuo WiFi. Dico questo perché la Airplanemodalità ha sicuramente interrotto le connessioni WiFi impreviste prima ma non più, se provi questa risposta.

È inoltre possibile impostare Taskerper passare sempre in Airplanemodalità allo spegnimento. In questo modo vedresti il ​​PIN Lock all'avvio.


Grazie, zero2cx - ma non lo sto chiedendo da solo, e non in particolare per Tasker (sono consapevole del fatto che potrei disabilitare le cose separatamente qui; ma disabilitare la radio cellulare separatamente non funziona con il mio Milestone²). Nella risposta alle domande collegate, cito anche altre due app. Secondo quanto riferito, richiedono che il PIN sia inserito o disabilitato, poiché utilizzano la modalità aereo. Quindi, per favore, capisci che non voglio una soluzione Tasker specifica (come molti trovano Tasker troppo complessa), ma piuttosto una soluzione generica per fare ciò che ho chiesto: disabilitare la richiesta PIN al ritorno solo dalla modalità aereo.
Izzy

Va bene. Sono perplesso, quindi. Deve esserci un modo per attivarlo con il software, ma in modo più sfumato. In che modo Samsung ti consente di farlo?
zero2cx,

Non posso dirlo (non ho un dispositivo Samsung). Ma ho notizie che sia fattibile su molti (tutti?) Dispositivi Samsung e con LG. Sul mio Milestone² non ho verificato esplicitamente, dato che la mia SIM corrente era nel mio HTC Buzz / Wildfire prima, se per questo avevo dovuto disabilitare completamente il SIM-PIN.
Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.