비행기 모드 후 PIN 요청 비활성화


10

전화를 켤 때 기본적으로 SIM-PIN을 입력하라는 메시지가 표시됩니다. SIM-PIN은 보안상의 좋은 수단으로 "위험"으로 인한 비용 발생을 방지합니다. 비행기 모드에서 돌아올 때도 동일하게 적용됩니다. SIM-PIN으로 다시 들어가야합니다. 어떤 에너지 절약기를 쓸모 없게 만드는 것 : 신호 손실로 인해 앱이 비행기 모드로 진입하는 경우 ( 셀 대기 란 무엇이며 배터리를 섭취하지 못하게하려면 어떻게해야합니까? ) 사용자 상호 작용없이 정상 작동으로 돌아올 수 없습니다 .

선택적으로 비활성화 하는 방법을 찾고 있습니다. 장치 전원을 켤 때 PIN 요청을 활성화하되 비행기 모드에서 돌아올 때 SIM-PIN을 요청하지 마십시오.

마십시오 하지 "키 가드"와 혼동 : 나는 화면 잠금 (PIN / 패턴 / 비밀번호)에 대해 물어 아니에요. 여기에는 앱에 사용할 API가 있으므로 내 길을 알고 있습니다 (따라서 Tasker로 일시적으로 끌 수 있습니다 ).

나는 이것이 삼성 장치에서 작동한다는 것을 알고 있지만 모든 제조업체에서 작동하는 장치 독립적 인 솔루션을 원합니다.


2
정말! 위의 질문에서 인용하겠습니다 . 체크 를 완전히 비활성화하지 않고 선택적으로 비활성화하는 방법을 찾고 있습니다. 완전히 비활성화 할 수 있다는 것을 알고 있습니다 (현재 사용중인 것입니다). 그러나 장치 시작이 아닌 비행기 모드에서 다시 전환 할 때만 비활성화하고 싶습니다.
Izzy

답변:


1

기권

  1. 루트가 필요합니다. 그 주위에 방법이 없습니다.
  2. 기기에서 Android 4.1 이상을 실행해야합니다
  3. 이 해결 방법은 일부 사용자에게는 너무 고급 일 수 있습니다. 현재하고있는 일을 알고있을 때만 적용하십시오.
  4. 이 과정에서 문제가 발생하거나 Ragnarök이 시작될 경우 책임을지지 않습니다. 당신은 자신의 위험을 감수하고 있습니다. 조심해서 진행해라.
  5. 나는 언급 된 개조의 저자가 아니거나 그와 관련이 없습니다. 나는 단지 이것을 발견했고 당신의 이익을 위해 그것을 공유하고 있습니다.

해결 방법

Cyanogenmod 10.2 및 Dorimanx Kernel 9.41이 설치된 Samsung Galaxy S2에서 아름답게 작동하는 문제에 대한 해결 방법을 찾았습니다. 필요한 단계는 다음과 같습니다.

  1. 장치가 루팅되어 있는지 확인하십시오.

  2. Xposed Framework Installer를 다운로드하여 설치하십시오 .

  3. Xposed가 가까운 미래에 루트를 요구할 때 그것을 부여하십시오 .

  4. 앱을 열고 Framework-Tab을 클릭하십시오 .

  5. 를 클릭하십시오 Install/Update.

  6. 재부팅하십시오 .

  7. Jelly Bean 4.x 비행기 모드 도우미를 다운로드하여 설치하십시오 .

  8. Xposed Framework Installer-App을 다시 열고를 선택하십시오 Modules.

  9. 틱 (활성화로 설정) Jelly Bean 4.x Airplane Mode Helper.

  10. 재부팅하십시오 .

  11. 를 엽니 다 Jelly Bean 4.x Airplane Mode Helper.

  12. 틱 (활성화 설정) 활성화 .

  13. 재부팅하십시오 .

그게 다야! 비행기 모드는 이전 Android 버전에서와 같이 다시 작동해야하며 끌 때 더 이상 SIM-PIN을 요청 하지 않습니다 . 그래도 시작시에도 작동하므로 SIM 카드는 다소 안전합니다. 여기에 설명 된 것과 유사한 Llama Location Profiles (Thx a bunch, Izzy) 를 사용하여 자동 배터리 절약 절차를 설정 했으며 완벽하게 작동합니다.

행운을 빈다!


1
답변 주셔서 감사합니다! 방금 서식 (목록)을 개선하기 위해 편집했으며 JB +가 필요하다는 사실을 추가했습니다. 내 장치에서 아직 JB를 실행하고 있지 않으므로 테스트 할 수는 없지만 가장 중요한 부분을 놓친 것 같습니다 (적어도 언급하지는 않음). 비행기에서 돌아올 때 SIM-PIN을 요청합니까? 모드 – 아니면 이런 식으로 건너 뛸 수 있습니까?
Izzy

1
안심하십시오, 나는 당신의 문제를 완전히 얻었고 내 대답은 정확히 당신이 찾고있는 것입니다;)- 비행기 모드에서 돌아올 때 SIM-PIN을 요구 하지는 않지만 부팅시 여전히 그렇습니다. 따라서 보안은 유지되지만 배터리 절약 스크립트는 다시 작동합니다. 포맷 업그레이드에 감사드립니다!
FuzzyQ

나는 당신이 옳은대로 가장 중요한 정보를 추가했습니다-비행기 모드 후 SIM을 다시 잠금 해제 할 필요가 없다는 사실을 언급하는 것을 완전히 잊었습니다.
FuzzyQ

1
이 경우, 그 이후의 결과 는 바로 다음과 같습니다. 자동화 된 작업은 수동 개입없이 작동하지만 "초기화"(즉, 부팅 후)와 관련하여 장치는 여전히 보호됩니다. 우수한! 나는 지금 그것을 찬성했다. t0mm13b의 솔루션도 테스트 할 수 없으므로 내 "수락"에 관해 당신을 믿어야합니다. 이것은 JB +로 제한되었지만 지금까지 가장 유망한 (그리고 무료입니다!) 솔루션처럼 보입니다.
Izzy

아시다시피, 내가 처음에 그곳에 도착한 것은 재밌습니다. 셀 대기 문제에 대한 귀하의 질문과 답변을 찾았으며 곧 비행기 모드 -SIM-PIN 문제가 발생했습니다. 지금까지 Xposed Framework를 사용하고 있었으므로 문제를 해결할 xposed 모듈을 찾아야했습니다. :)
FuzzyQ

8

대답은 출처에 있습니다 ... 핀 잠금을 요청하는 속성이 build.prop또는에 내장되어있는 것 같습니다 default.prop.

전화선 735와 755 사이 의 TelephonyManager 소스 에있는 참조를 살펴보십시오 .

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;
        }
    }

키는 라인 94와 98 사이의 다른 곳 에서 TelephonyProperties.PROPERTY_SIM_STATE참조 됩니다 .

//****** 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";

내 컴퓨터에서 소스 코드를 검색 한 후이 메소드 getSimState가 얼마나 자주 호출 되는지에 대한 아이디어를 제공합니다. 전화 소스 계층뿐만 아니라 안드로이드에 통합 된 방법에 대한 단서가되는 Java 소스의 이름을 주목하십시오. 다른 곳.

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

잠금 화면에서 해당 파일 이름에 실마리를 제공합니까?

이론

이것은이 시점에서 루트를 요구 adb shell하고 호출 getprop하고 호출 setprop함으로써 유일한 부분은 호출함으로써

adb shell getprop 아래 표시된대로 관련 정보를 다시 얻습니다.

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

이 미묘한 속성은 전원을 켜는 순간부터 백업 속성 저장소에 동적으로 유지되는 것으로 보이며 그 수, 서비스 및 수에 따라 조정되며 SIM 카드를 떨어 뜨릴 수있는 실수로 핸드셋을 떨어 뜨릴 수 있습니다. 카드 상태를 " 준비 안 됨 "또는 " 알 수 없음 "으로 변경하는 리더 (참고 : system / core / include / cutils / properties.hsystem / core / toolbox / [ getprop | setprop ] .c)

이제이 시점에서 이론적으로 화면을 잠그기 전에 setprop를 호출하면 일시적으로 우회 될 수 있지만 다시 전화 계층에 의해 재설정 될 수 있습니다! 시도하지 않았습니다! 어느 것이 이것을 이끌고 있습니까?

결론

유일한 방법 이 꺼지고 효과적이다 수 실제로 SIM 카드에 핀 로크 요청을 해제 . 여기에는 전화의 RIL 레이어가 독점적 인 htc / samsung / qualcomm의 라이브러리를 통해이를 읽고 "PIN_REQUIRED"속성이 지속되는 것을 막는 "마법"비트 플래그가 저장되어 있습니다. 안드로이드의 레이어.

가능한 해결 방법은 Android 개발자에게만 해당됩니다. :)

이를 위해서는 소스를 해킹하고 재 컴파일해야합니다. 비행기 모드의 경우 해당 모드로 들어가 비행기 모드를 나갈 때 속성을 2 개로 나눌 수 있으며 , gsm.sim.state 는 그대로 남겨 수 있지만 gsm.sim.state 와 같은 다른 속성을 고안 할 수 있습니다 . airplane.mode 및의 행을 따라 값을 지정 SIM_STATE_PIN_NOT_REQUIRED하고 비행기 모드 확인을 수정하여 해당 속성을 읽은 다음 속성을 설정 한 경우 핀 대화 상자를 표시하지 마십시오.


자세한 설명 t0mm13b에 감사드립니다! 따라서 삼성과 LG가 언급 한 모든 곳에서 코드를 변경했다고 가정해야합니다. 삼성 및 LG 장치에 대한 보고서 (사람들이 내 질문에 설명 된 것처럼 SIM PIN 확인을 별도로 비활성화 할 수 있다고 말한 경우) 옳은?
Izzy

다시 감사합니다! CM에서 해당 설정을 찾으려고 할 수 있다면 CM이 많은 장치에서 사용할 수 있기 때문에 이미 큰 도움이 될 것입니다. 내 장치가 모두 CM 7.x를 실행 중이므로 확인 가능-아직 그런 설정을 겪지 않았음에도 불구하고 (그래서 내가 어디를 볼지 묻고 있습니다.)
Izzy

설정> 위치 및 보안 설정, Sim 카드 잠금을 사용해보십시오.
t0mm13b

내가 거기에 같은 내에서 질문에 대한 답변이었다 댓글을 삭제했다 AOSP 소스에 현재의 (내 SIM 카드가 이미 잠금이 해제 어쨌든 핀 요청 잠금 무료로 처음을 보았다)
t0mm13b

1
진저 브레드 (Motorola Droid² / Milestone²의 CM7.2)는 확인할 수 없습니다. 사실, SIM PIN은 설명 된 위치에서 구성 할 수 있지만 "전원을 켤 때만"선택적이 아닌 켜짐 / 꺼짐 만 가능합니다. 죄송합니다.
Izzy

3

나는 당신이하려는 일을해야한다고 확신하지 않습니다.

대신 다음을 수행 할 수 있습니다.

  • Tasker활성화 / 비활성화 Airplane모드에서 수행 하는 모든 기능을 켜거나 끄려면 두 가지 작업을 설정하십시오 .
  • 실제로 Airplane모드를 사용하지 마십시오 . 당신의 Tasker작업을 사용하십시오 .

하드웨어 라디오 를 자동으로 켤 수있는 앱이 있는지 확인해야 할 수도 있습니다 . 앱이 백그라운드 동기화 등을 시도하는지 확인하고 비활성화 된 라디오를 켜려고 시도 할 수 있습니다. 그렇다면 WiFi와 같은 앱의 기능을 자동으로 켜십시오. Airplane이 답변을 시도하면 모드가 예기치 않은 WiFi 연결을 확실히 중지했지만 더 이상은 아니기 때문에 이것을 말합니다 .

종료시 Tasker항상 Airplane모드 로 전환 되도록 설정할 수도 있습니다 . 그렇게하면 부팅시 PIN 잠금이 나타납니다.


고맙습니다. zero2cx-나만 요구하지는 않으며 특히 Tasker 는 아닙니다. (여기서 개별적으로 비활성화 할 수 있다는 사실을 알고 있지만 셀룰러 라디오를 개별적으로 비활성화하면 Milestone²에서 작동하지 않습니다). 링크 된 질문에 대한 답변에서 두 개의 다른 앱도 언급합니다. 그들은 비행기 모드를 사용하기 때문에 PIN을 입력하거나 비활성화해야한다고합니다. 따라서 특정 Tasker 솔루션 (많은 Tasker가 너무 복잡하다는 것을 알기 때문에)을 원하지 않지만 오히려 요청한 작업을 수행하는 일반적인 솔루션 : 비행기 모드에서 돌아올 때 PIN 요청을 비활성화하십시오.
Izzy

괜찮아. 나는 그 다음에 충격을 받았다. 소프트웨어로 토글하는 방법이 있지만 더 미묘한 방식으로해야합니다. 삼성은 어떻게 그렇게 할 수 있습니까?
zero2cx

말할 수 없습니다 (Samsung 장치가 없음). 그러나 LG뿐만 아니라 많은 (모든) 삼성 장치에서 가능하다는 보고서가 있습니다. Milestone²에서는 현재 SIM이 HTC Buzz / Wildfire에 있었기 때문에이 목적으로 SIM-PIN을 완전히 비활성화해야했기 때문에 명시 적으로 확인하지 않았습니다.
Izzy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.