desactivar la solicitud de PIN después del modo avión

10

Al encender el teléfono, por defecto se le pide a uno que ingrese el PIN de la SIM, que es una buena medida de seguridad, para evitar que "extraños" le causen costos. Ahora lo mismo se aplica al regresar del modo avión: uno tiene que ingresar el PIN SIM nuevamente. Lo que hace que ciertos ahorradores de energía sean inútiles: si una aplicación, por ejemplo, ingresa al modo avión con pérdida de señal (consulte: ¿Qué es el modo de espera de la celda y cómo puedo evitar que se quede sin batería? ), No podría volver al funcionamiento normal sin la interacción del usuario .

Estoy buscando una forma de desactivar esto selectivamente : tener activa la solicitud de PIN al encender el dispositivo, pero no se me solicita el PIN de SIM al regresar del modo avión.

Por favor, no confunda esto con "el bloqueo de teclas": No estoy preguntando por el bloqueo de la pantalla (PIN / patrón / contraseña). Aquí conozco mi camino, ya que hay una API para que las aplicaciones usen (por lo que, por ejemplo, puedo desactivar esto temporalmente con Tasker ).

Sé que esto funciona con dispositivos Samsung, pero preferiblemente quiero una solución independiente del dispositivo que funcione para todos los fabricantes.

Izzy
fuente
2
¡De Verdad! Permítanme citar la pregunta anterior: estoy buscando una forma de deshabilitar esto selectivamente , no deshabilitar completamente el cheque. Sé que puede deshabilitarse por completo (que es lo que uso actualmente), pero quiero deshabilitarlo solo para volver del modo Avión, no para el inicio del dispositivo.
Izzy

Respuestas:

1

DESCARGO DE RESPONSABILIDAD

  1. Esto necesita root. No hay forma de evitar eso.
  2. Su dispositivo debe estar ejecutando Android 4.1+
  3. Esta solución alternativa puede ser demasiado avanzada para algunos usuarios. Solo trate de aplicarlo cuando sepa lo que está haciendo.
  4. No soy responsable si algo sale mal o si Ragnarök comienza durante el proceso. Estás haciendo esto bajo tu propio riesgo. Proceda con precaución.
  5. No soy autor ni estoy afiliado a ninguna de las modificaciones mencionadas. Simplemente encontré esto y lo estoy compartiendo para su beneficio.

SOLUCIÓN ALTERNA

Encontré una solución para el problema que funciona maravillosamente en un Samsung Galaxy S2 con Cyanogenmod 10.2 y Dorimanx Kernel 9.41 instalado. Los pasos necesarios son los siguientes:

  1. Asegúreses de que su dispositivo esté hackeado.

  2. Descargue e instale Xposed Framework Installer .

  3. Cuando Xposed pide raíz en cualquier lugar en el futuro cercano, concédelo .

  4. Abra la aplicación y haga clic en Framework-Tab.

  5. Haga clic Install/Update.

  6. Reinicio .

  7. Descargue e instale Jelly Bean 4.x Airplane Mode Helper .

  8. Abra Xposed Framework Installer-App nuevamente y seleccione Modules.

  9. Marque (conjunto activo) Jelly Bean 4.x Airplane Mode Helper.

  10. Reinicio .

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

  12. Marcar (activar) Activado .

  13. Reinicio .

¡Eso es! El Modo avión debería funcionar nuevamente como en las versiones anteriores de Android y ya no solicita el PIN de la SIM cuando se apaga. Sin embargo, todavía lo hace al inicio, lo que mantiene su tarjeta SIM algo segura. Configuré un procedimiento de ahorro de batería automatizado con Llama Location Profiles similar al descrito aquí (Thx un montón, Izzy) y funciona perfectamente.

Buena suerte amigos!

FuzzyQ
fuente
1
¡Muchas gracias por tu respuesta! Lo acabo de editar para mejorar el formato (listas) y agregué el hecho de que requiere JB +. Como mis dispositivos aún no están ejecutando JB, no puedo probarlo, pero sospecho que es posible que se haya perdido la parte más importante de la pregunta (al menos no lo menciona): ¿solicita el PIN de SIM al regresar de Airplane? modo, ¿o se puede omitir de esta manera?
Izzy
1
Tenga la seguridad, entendí completamente su problema y mi respuesta es exactamente lo que estaba buscando;): no solicita el PIN de SIM al regresar del Modo avión, pero aún lo hace al arrancar. Por lo tanto, su seguridad se mantiene pero su script de ahorro de batería está funcionando nuevamente. ¡Gracias por la actualización de formato!
FuzzyQ
Agregué la información más importante porque tenía razón: olvidé por completo mencionar el hecho de que esto elimina la necesidad de desbloquear su SIM nuevamente después del modo avión.
FuzzyQ
1
En este caso, es exactamente lo que buscaba: los trabajos automatizados funcionan sin intervención manual, pero el dispositivo todavía está protegido cuando se trata de "inicialización" (es decir, después de un arranque). ¡Excelente! Lo voté por ahora. Como tampoco puedo probar la solución de t0mm13b, tengo que confiar en ti con respecto a mi "aceptar": esta parece ser la solución más prometedora (¡y gratuita!) Hasta ahora, aunque se limita a JB +.
Izzy
Sabes, es divertido cómo llegué allí en primer lugar. Encontré su pregunta y respuesta al problema de la celda en espera y pronto terminé con el problema del modo de avión-SIM-PIN. Como he estado usando Xposed Framework durante algún tiempo, tuve la idea de buscar un módulo xposed que solucionara el problema. :)
FuzzyQ
8

La respuesta se encuentra en la fuente ... parece ser que la propiedad para solicitar el bloqueo de clavija está integrada en build.propo default.prop.

Eche un vistazo a la referencia que se encuentra en la fuente de TelephonyManager , entre las líneas 735 y 755. Por brevedad,

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 clave es la TelephonyProperties.PROPERTY_SIM_STATEque se menciona en otra parte , entre las líneas 94 y 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";

Después de buscar a través del código fuente aquí en mi máquina, le daré la idea de la frecuencia con la que getSimStatese llama a este método , observe los nombres de la fuente de Java para saber cómo se integra en Android, no solo en la capa de telefonía sino en otra parte.

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() {

¿Esos nombres de archivo dan una pista, sí, en la pantalla de bloqueo ...

Teoría

Esto requiere root en este punto, invocando adb shelly llamando getpropy setproppara hacer esto, la única parte es esta, invocando

adb shell getprop recuperará la información pertinente como se muestra a continuación

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

Esta propiedad sutil parece persistir dinámicamente en una tienda de propiedades de respaldo, desde el momento del encendido y se ajusta en consecuencia, en función de la cantidad de cosas, el servicio, y sin mencionar la caída accidental del teléfono que puede sacar la tarjeta SIM de su lector que cambiaría el estado de la tarjeta a " no preparado " o " desconocido ". ( ref: system / core / include / cutils / properties.h y system / core / toolbox / [ getprop | setprop ] .c)

Ahora, en este punto, teóricamente, al invocar setprop antes de bloquear la pantalla, se puede evitar temporalmente, pero, de nuevo, ¡la capa de telefonía podría restablecerla! No he probado eso! Lo que lleva a esto ...

Conclusión

La única forma en que esto se puede desactivar es deshabilitar efectivamente la solicitud de bloqueo de pin en la tarjeta SIM real . Ahí es donde se almacena el indicador de bits "mágico", en el que la capa RIL de la telefonía lo lee a través de la biblioteca patentada de htc / samsung / qualcomm, y eso evitaría la propagación de la persistencia de la propiedad "PIN_REQUIRED" a través de Las capas de Android.

Una posible solución, solo para desarrolladores de Android :)

Esto requeriría piratear y recompilar la fuente. Para el modo avión, al ingresar a ese modo y salir del modo avión, la propiedad podría dividirse en dos, gsm.sim.state puede dejarse como está, pero idear otra propiedad, algo como esto, gsm.sim.state. avión.mode y asigne un valor a lo largo de las líneas de SIM_STATE_PIN_NOT_REQUIRED, y modifique la verificación del modo avión, para leer esa propiedad y, si se establece en eso, no muestre el cuadro de diálogo de pin, de lo contrario, como siempre lo hace, solicítelo.

t0mm13b
fuente
Gracias por la explicación detallada, t0mm13b! Por lo tanto, debemos suponer que Samsung y LG han cambiado el código en todos los lugares que mencionó, si los informes que recibí sobre los dispositivos Samsung y LG (donde las personas dijeron que podrían desactivar la verificación del PIN de la SIM por separado, como se describe en mi pregunta) ¿correcto?
Izzy
¡Gracias de nuevo! Si pudieras saber si encontraras esa configuración en CM, y dado que cuando está allí, esto ya sería de gran ayuda, ya que CM está disponible para muchos dispositivos :) Todos mis dispositivos ejecutan CM 7.x, así que podría verificar, aunque todavía no encontré un entorno de este tipo (es por eso que estoy preguntando por el lugar donde buscar;)
Izzy
Pruebe Configuración> Configuración de ubicación y seguridad, ¿Bloqueo de tarjeta SIM?
t0mm13b
Tuve que eliminar el comentario que era una respuesta a su pregunta allí dentro de la misma, está presente en las fuentes de AOSP (por primera vez lo vi ya que mi tarjeta SIM ya está desbloqueada y sin bloqueo de solicitud de pin de todos modos)
t0mm13b
1
No confirmado para Gingerbread (CM7.2 en mi Motorola Droid² / Milestone²). Es cierto que el PIN de la SIM se puede configurar en el lugar descrito, pero solo encendido / apagado, no selectivo para "solo al encender". Lo siento.
Izzy
3

No estoy seguro de que necesite hacer lo que está tratando de hacer.

Podría, en cambio:

  • Configure dos Taskertareas para activar / desactivar todo lo que Airplanehace el modo de activación / desactivación .
  • Nunca uses en realidad tu Airplanemodo. Usa tus Taskertareas.

Es posible que tenga que ver si alguna aplicación está habilitada para encender automáticamente una radio de hardware. Observe si una aplicación intenta sincronizar en segundo plano o lo que sea, podrían intentar activar las radios desactivadas. Si es así, desactive la capacidad de esa aplicación para encender automáticamente, por ejemplo, su WiFi. Digo esto porque el Airplanemodo ciertamente detuvo las conexiones WiFi inesperadas antes, pero ya no, si intentas esta respuesta.

También puede configurarlo Taskerpara que siempre entre en Airplanemodo al apagar. De esa forma verías el PIN Lock en el momento del arranque.

zero2cx
fuente
Gracias, zero2cx, pero no estoy preguntando solo por mí, y no especialmente por Tasker (soy consciente del hecho de que podría deshabilitar las cosas por separado aquí; pero deshabilitar la radio celular por separado no funciona con mi Milestone²). En la respuesta a las preguntas vinculadas, también menciono otras dos aplicaciones. Según los informes, requieren que se ingrese o deshabilite el PIN, ya que usan el modo avión. Por lo tanto, comprenda que no quiero una solución específica de Tasker (ya que muchos consideran que Tasker es demasiado complejo), sino una solución genérica para hacer lo que pedí: deshabilitar la solicitud de PIN al regresar solo del modo avión.
Izzy
Bueno. Estoy perplejo, entonces. Tiene que haber una manera de alternarlo con el software, pero de una manera más matizada. ¿Cómo te permite Samsung hacerlo?
zero2cx
No puedo decir (no tengo un dispositivo Samsung). Pero tengo informes de que es factible en muchos (¿todos?) Dispositivos Samsung, así como con LG. En mi Milestone² no verifiqué explícitamente, ya que mi SIM actual estaba en mi HTC Buzz / Wildfire antes, si tenía que desactivar por completo el PIN de SIM para este propósito.
Izzy