ปิดใช้งานคำขอ PIN หลังจากโหมดเครื่องบิน


10

เมื่อเปิดโทรศัพท์หนึ่งจะขอให้ป้อน SIM-PIN ซึ่งเป็นมาตรการรักษาความปลอดภัยที่ดีเพื่อป้องกัน "คนแปลกหน้า" จากค่าใช้จ่ายของคุณ ตอนนี้ก็เช่นเดียวกันเมื่อกลับมาจากโหมดเครื่องบิน: ต้องป้อน SIM-PIN อีกครั้ง ตัวแสดงพลังงานตัวใดที่ไร้ประโยชน์: หากแอปเช่นเข้าสู่โหมดเครื่องบินจากการสูญเสียสัญญาณ (ดู: อะไรคือเซลล์สแตนด์บายและฉันจะป้องกันไม่ให้กินแบตเตอรี่ได้อย่างไร ) มันจะไม่สามารถกลับสู่การทำงานปกติโดยไม่ต้องมีการโต้ตอบกับผู้ใช้ .

ฉันกำลังมองหาวิธีที่จะปิดการใช้งานการเลือกนี้: ขอ PIN ให้เปิดใช้งานเมื่อเปิดเครื่องอุปกรณ์ - แต่ไม่ถูกถามถึง SIM-PIN เมื่อกลับมาจากโหมดเครื่องบิน

โปรดอย่าได้สับสนนี้กับ "ล็อคปุ่มกด" ฉันไม่ได้ถามเกี่ยวกับการล็อคหน้าจอ (PIN / รูปแบบ / รหัสผ่าน) ที่นี่ฉันรู้วิธีการของฉันเนื่องจากมี API สำหรับแอปที่ใช้ (เช่นฉันสามารถปิดสิ่งนี้ชั่วคราวด้วยTasker )

ฉันรู้ว่ามันใช้งานได้กับอุปกรณ์ Samsung แต่ฉันต้องการโซลูชันอิสระสำหรับอุปกรณ์ที่เหมาะกับผู้ผลิตทุกราย


2
จริงๆ! ให้ฉันอ้างอิงจากคำถามข้างต้น: ฉันกำลังมองหาวิธีที่จะปิดการใช้งานการคัดเลือก - ไม่ปิดการใช้งานการตรวจสอบอย่างสมบูรณ์ ฉันรู้ว่ามันสามารถปิดการใช้งานได้อย่างสมบูรณ์ (ซึ่งเป็นสิ่งที่ฉันใช้ในปัจจุบัน) - แต่ฉันต้องการที่จะปิดการใช้งานเฉพาะสำหรับการเปลี่ยนกลับจากโหมดเครื่องบินไม่ใช่สำหรับการเริ่มต้นอุปกรณ์
อิซซี

คำตอบ:


1

การปฏิเสธความรับผิด

  1. สิ่งนี้ต้องการราก ไม่มีทางรอบที่หนึ่ง
  2. อุปกรณ์ของคุณต้องใช้ Android 4.1 ขึ้นไป
  3. วิธีแก้ปัญหานี้อาจจะสูงเกินไปสำหรับผู้ใช้บางคน ลองใช้เมื่อคุณรู้ว่าคุณกำลังทำอะไรอยู่
  4. ฉันจะไม่รับผิดชอบถ้ามีอะไรผิดปกติหรือRagnarökเริ่มในระหว่างกระบวนการ คุณกำลังทำสิ่งนี้ด้วยความเสี่ยงของคุณเอง ดำเนินการต่อด้วยความระมัดระวัง
  5. ฉันไม่ได้เป็นผู้เขียนหรือมีส่วนเกี่ยวข้องกับ mods ที่กล่าวถึง ฉันเพิ่งพบสิ่งนี้และฉันแบ่งปันเพื่อประโยชน์ของคุณ

การหลีกเลี่ยงปัญหา

ฉันพบวิธีแก้ปัญหาสำหรับปัญหาที่ทำงานได้อย่างสวยงามบน Samsung Galaxy S2 ที่ติดตั้ง Cyanogenmod 10.2 และ Dorimanx Kernel 9.41 ขั้นตอนที่จำเป็นมีดังนี้:

  1. ตรวจสอบให้แน่ใจว่าอุปกรณ์ของคุณถูกรูท

  2. ดาวน์โหลดและติดตั้งXposed กรอบการติดตั้ง

  3. เมื่อ Xposed ขอให้ทุกที่รากในอนาคตอันใกล้นี้ให้มัน

  4. เปิดแอพและคลิกที่Framework-Tab

  5. Install/Updateคลิก

  6. Reboot

  7. ดาวน์โหลดและติดตั้งJelly Bean 4.x โหมดเครื่องบิน Helper

  8. เปิดXposed Framework Installer-App Modulesอีกครั้งและเลือก

  9. Tick Jelly Bean 4.x Airplane Mode Helper(ตั้งค่าการใช้งาน)

  10. Reboot

  11. Jelly Bean 4.x Airplane Mode Helperเปิด

  12. Tick (ตั้งค่าใช้งาน) ที่เปิดใช้งาน

  13. Reboot

แค่นั้นแหละ! โหมดเครื่องบินควรทำงานอีกครั้งเหมือนใน Android รุ่นก่อนหน้าและไม่ขอ SIM-PIN อีกต่อไปเมื่อถูกปิด แต่มันก็ยังทำเมื่อเริ่มต้นจึงทำให้ซิมการ์ดของคุณค่อนข้างปลอดภัย ฉันตั้งขั้นตอนการประหยัดแบตเตอรี่อัตโนมัติด้วยโปรไฟล์ตำแหน่งของ Llamaคล้ายกับที่อธิบายไว้ที่นี่ (ขอบคุณมากอิซซี่) และมันทำงานได้อย่างไม่มีที่ติ

ขอให้โชคดีนะ!


1
ขอบคุณมากสำหรับคำตอบของคุณ! ฉันเพิ่งแก้ไขเพื่อปรับปรุงการจัดรูปแบบ (รายการ) และเพิ่มข้อเท็จจริงที่ต้องใช้ JB + เนื่องจากอุปกรณ์ของฉันยังไม่ได้ใช้งาน JB ฉันจึงไม่สามารถทดสอบได้ - แต่ฉันสงสัยว่าคุณอาจพลาดคำถามที่สำคัญที่สุด (อย่างน้อยคุณไม่ได้พูดถึง): มันถาม SIM-PIN เมื่อกลับจากเครื่องบินหรือไม่ โหมด - หรือสามารถข้ามได้ด้วยวิธีนี้?
Izzy

1
โปรดมั่นใจว่าฉันได้รับปัญหาของคุณอย่างสมบูรณ์และคำตอบของฉันคือสิ่งที่คุณกำลังมองหา;) - มันไม่ได้ขอ SIM-PIN เมื่อกลับมาจากโหมดเครื่องบิน แต่ก็ยังทำตอนบูต ดังนั้นความปลอดภัยของคุณจะถูกเก็บไว้ แต่สคริปต์การประหยัดแบตเตอรี่ของคุณทำงานอีกครั้ง ขอบคุณสำหรับการอัพเกรดการจัดรูปแบบ!
FuzzyQ

ฉันเพิ่มข้อมูลที่สำคัญที่สุดในขณะที่คุณพูดถูก - ฉันลืมพูดถึงความจริงที่ว่าสิ่งนี้ไม่จำเป็นต้องปลดล็อคซิมของคุณอีกครั้งหลังจากโหมดเครื่องบิน
FuzzyQ

1
ในกรณีนี้ก็คือว่าสิ่งที่ผมหลัง: งานอัตโนมัติจะทำงานโดยปราศจากการแทรกแซง แต่อุปกรณ์ยังคงได้รับการคุ้มครองเมื่อมันมาถึง "การเริ่มต้น" (คือต่อไปนี้บูต) ยอดเยี่ยม ฉันสมัครตอนนี้ เนื่องจากฉันไม่สามารถทดสอบโซลูชันของ t0mm13b ได้ฉันต้องเชื่อใจคุณเกี่ยวกับ "การยอมรับ" ของฉัน: นี่ดูเหมือนจะเป็นทางออกที่ดีที่สุด (และฟรี!) ถึงแม้ว่าจะ จำกัด อยู่ที่ JB +
Izzy

คุณรู้ไหมมันตลกที่ฉันไปถึงที่นั่นตั้งแต่แรก ฉันพบคำถาม & คำตอบของคุณเกี่ยวกับปัญหาสแตนด์บายของเซลล์และในไม่ช้าก็จบลงด้วยโหมดเครื่องบิน - SIM-PIN- ปัญหา เนื่องจากฉันใช้ Xposed Framework มาระยะหนึ่งแล้วฉันจึงมีความคิดที่จะมองหาโมดูล xposed ที่จะจัดการกับปัญหา :)
FuzzyQ

8

คำตอบอยู่ในแหล่งที่มา ... มันน่าจะเป็นที่คุณสมบัติการร้องขอขาล็อคที่ถูกสร้างขึ้นในหรือbuild.propdefault.prop

ดูการอ้างอิงที่พบในแหล่ง TelephonyManager ระหว่างบรรทัดที่ 735 และ 755 เพื่อความกระชับ

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

กุญแจสำคัญคือTelephonyProperties.PROPERTY_SIM_STATEที่มีการอ้างอิงที่อื่น ๆระหว่างบรรทัด 94 และ 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";

หลังจากค้นหาจากซอร์สโค้ดที่นี่ในเครื่องของฉันฉันจะให้คุณคิดว่าวิธีนี้getSimStateเรียกว่าบ่อยแค่ไหนสังเกตชื่อของแหล่งที่มาของจาวาเพื่อที่จะรู้ว่ามันถูกรวมเข้ากับ Android อย่างไรไม่ใช่แค่ในเลเยอร์ Telephony ที่อื่น ๆ

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

ทำชื่อไฟล์เหล่านั้นให้เบาะแส yup ในหน้าจอล็อค ...

ทฤษฎี

สิ่งนี้ต้องการรูท ณ จุดนี้โดยการเรียกใช้adb shellและการเรียกใช้getpropและsetpropการทำเช่นนี้ส่วนเดียวคือโดยการเรียกใช้

adb shell getprop จะกลับข้อมูลที่เกี่ยวข้องดังที่แสดงด้านล่าง

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

คุณสมบัติที่ละเอียดอ่อนนี้ดูเหมือนจะถูกเก็บไว้ในที่เก็บข้อมูลสำรองแบบไดนามิกจากช่วงเวลาของการเปิดเครื่องและปรับเปลี่ยนตามจำนวนสิ่งบริการและไม่พูดถึงการวางโทรศัพท์มือถือซึ่งอาจทำให้ซิมการ์ดหลุดออกมาโดยบังเอิญ ผู้อ่านซึ่งจะเปลี่ยนสถานะของการ์ดเป็น " ไม่พร้อม " หรือ " ไม่ทราบ " ( อ้างอิง: ระบบ / core / include / cutils / properties.hและsystem / core / toolbox / [ getprop | setprop ] .c)

ทีนี้มาถึงจุดนี้ในทางทฤษฎีแล้วการเรียกใช้ setprop ก่อนที่จะล็อคหน้าจอมันอาจถูกหลบหลีกชั่วคราว ยังไม่ได้ลอง! ซึ่งนำไปสู่สิ่งนี้ ...

ข้อสรุป

เพียงวิธีนี้สามารถปิดคือการได้อย่างมีประสิทธิภาพปิดการใช้งานคำขอขาล็อคที่เกิดขึ้นจริงซิมการ์ด นั่นคือที่เก็บบิตมายากล "มายากล" ที่ซึ่งเลเยอร์ RIL ของโทรศัพท์อ่านผ่านห้องสมุดของ htc / samsung / qualcomm กรรมสิทธิ์และจะป้องกันการแพร่กระจายของคุณสมบัติ "PIN_REQUIRED" ผ่าน เลเยอร์ของ Android

วิธีแก้ปัญหาที่เป็นไปได้สำหรับนักพัฒนา Android เท่านั้น :)

สิ่งนี้จะต้องมีการแฮ็กและการคอมไพล์แหล่งที่มาใหม่ สำหรับโหมดเครื่องบินเมื่อเข้าสู่โหมดนั้นและออกจากโหมดเครื่องบินคุณสมบัติสามารถแยกออกเป็นสองgsm.sim.stateสามารถเหลือได้เหมือนเดิม แต่ประดิษฐ์คุณสมบัติอื่นเช่นgsm.sim.state airplane.modeและกำหนดค่าตามแนวของSIM_STATE_PIN_NOT_REQUIREDและแก้ไขการตรวจสอบโหมดการบินเพื่ออ่านคุณสมบัตินั้นและหากตั้งค่าเป็นสิ่งนั้นอย่าแสดงกล่องโต้ตอบพินมิฉะนั้นจะแสดงขึ้นมาตามปกติ


ขอบคุณสำหรับคำอธิบายโดยละเอียด t0mm13b! ดังนั้นเราต้องสมมติว่าซัมซุงและแอลจีได้เปลี่ยนรหัสในทุกสถานที่ที่คุณกล่าวถึง - หากรายงานที่ฉันได้รับเกี่ยวกับอุปกรณ์ซัมซุงและแอลจี (ที่ผู้คนบอกว่าพวกเขาสามารถปิดใช้งานการตรวจสอบ PIN ของซิมการ์ดแยกต่างหาก แก้ไข?
Izzy

ขอบคุณอีกครั้ง! หากคุณสามารถบอกได้ว่าต้องพบการตั้งค่าใน CM และตั้งแต่เมื่อมันอยู่ในนั้นสิ่งนี้จะเป็นประโยชน์อย่างมาก - เนื่องจาก CM พร้อมใช้งานสำหรับอุปกรณ์มากมาย :) อุปกรณ์ของฉันใช้ CM 7.x ทั้งหมดดังนั้นฉันจึง สามารถยืนยันได้ - แม้ว่าฉันยังไม่ได้พบกับสภาพแวดล้อมเช่นนี้ (ซึ่งเป็นสาเหตุที่ฉันขอสถานที่ที่จะมองหา)
อิซซี่

ลองการตั้งค่า> การตั้งค่าตำแหน่งและความปลอดภัยล็อคซิมการ์ดหรือไม่
t0mm13b

ฉันต้องลบความคิดเห็นที่เป็นคำตอบสำหรับคำถามของคุณภายในนั้นมีอยู่ในแหล่งข้อมูล AOSP (ครั้งแรกที่เห็นว่าซิมการ์ดของฉันถูกปลดล็อคแล้วและไม่มีการขอพินล็อคอยู่ดี)
t0mm13b

1
ไม่ได้รับการยืนยันสำหรับ Gingerbread (CM7.2 บน Motorola Droid² / Milestone²) True, SIM PIN สามารถกำหนดค่าได้ในสถานที่ที่อธิบาย - แต่เพียงเปิด / ปิดไม่เลือกสำหรับ "ที่เปิดเครื่อง" เท่านั้น ขอโทษ
Izzy

3

ฉันไม่แน่ใจว่าคุณต้องทำสิ่งที่คุณพยายามทำ

คุณอาจแทน:

  • ตั้งค่าสองTaskerภารกิจเพื่อเปิด / ปิดทุกอย่างที่Airplaneโหมดเปิด / ปิดใช้งานทำ
  • ไม่เคยใช้Airplaneโหมดของคุณจริงๆ ใช้Taskerงานของคุณ

คุณอาจจะต้องดูว่าปพลิเคชันใด ๆ ที่มีการใช้งานไปโดยอัตโนมัติเปิดวิทยุฮาร์ดแวร์ ดูเพื่อดูว่าแอปพลิเคชันพยายามซิงค์พื้นหลังหรืออะไรก็ตามพวกเขาอาจพยายามเปิดวิทยุที่ปิดการใช้งาน หากเป็นเช่นนั้นให้ปิดใช้งานความสามารถของแอปนั้นในการเปิด WiFi อัตโนมัติของคุณ ฉันพูดแบบนี้เพราะAirplaneโหมดหยุดการเชื่อมต่อ WiFi ที่ไม่คาดคิดมาก่อนอย่างแน่นอน แต่ไม่ใช่อีกต่อไปถ้าคุณลองตอบคำถามนี้

คุณสามารถตั้งค่าTaskerให้เข้าสู่Airplaneโหมดเมื่อปิดเครื่องได้เสมอ ด้วยวิธีนี้คุณจะเห็น PIN Lock ในเวลาบูต


ขอบคุณ zero2cx - แต่ฉันไม่ได้ขอให้ฉันอยู่คนเดียวและไม่ได้โดยเฉพาะอย่างยิ่งสำหรับTasker (ฉันตระหนักถึงความจริงที่ว่าฉันสามารถปิดการใช้งานสิ่งต่าง ๆ ได้ที่นี่ แต่การปิดใช้งานวิทยุมือถือแยกไม่ทำงานกับMilestone²) ในคำตอบของคำถามที่เชื่อมโยงฉันยังพูดถึงอีกสองแอพ พวกเขารายงานว่าต้องการให้ป้อนหรือปิดใช้งาน PIN เนื่องจากใช้โหมดเครื่องบิน ดังนั้นโปรดเข้าใจว่าฉันไม่ต้องการโซลูชันTasker ที่เฉพาะเจาะจง(หาTaskerที่ซับซ้อนเกินไป) แต่เป็นโซลูชันทั่วไปที่จะทำสิ่งที่ฉันขอ: ปิดใช้งานคำขอ PIN เมื่อกลับมาจากโหมดเครื่องบินเท่านั้น
Izzy

ตกลง. ฉันนิ่งงันแล้ว จะต้องมีวิธีการสลับกับซอฟต์แวร์ แต่ในทางที่เหมาะสมยิ่งขึ้น Samsung จะให้คุณทำอย่างไร
zero2cx

ฉันไม่สามารถบอกได้ (ไม่มีอุปกรณ์ Samsung) แต่ฉันได้รับรายงานว่าสามารถใช้งานได้กับอุปกรณ์ซัมซุง (ทั้งหมดหรือไม่) มากมายรวมถึงกับแอลจี ใน Milestone ของฉันฉันไม่ได้ตรวจสอบอย่างชัดเจนเนื่องจาก SIM ปัจจุบันของฉันอยู่ใน HTC Buzz / Wildfire ก่อนหน้านี้ฉันต้องปิดใช้งาน SIM-PIN อย่างสมบูรณ์เพื่อจุดประสงค์นี้
Izzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.