hủy kích hoạt mã PIN yêu cầu sau chế độ máy bay


10

Khi bật điện thoại, một người theo mặc định được yêu cầu nhập SIM-PIN - đây là một biện pháp bảo mật tốt, để ngăn chặn "người lạ" gây ra chi phí cho bạn. Bây giờ áp dụng tương tự khi trở về từ chế độ máy bay: người ta phải nhập lại SIM-PIN. Điều này làm cho trình tiết kiệm năng lượng nhất định trở nên vô dụng: nếu một ứng dụng, ví dụ như ở chế độ máy bay bị mất tín hiệu (xem: Chế độ chờ của tế bào là gì và làm cách nào tôi không thể ăn pin? ), Nó sẽ không thể trở lại hoạt động bình thường nếu không có sự tương tác của người dùng .

Tôi đang tìm cách vô hiệu hóa một cách có chọn lọc điều này: Kích hoạt yêu cầu mã PIN khi bật nguồn thiết bị - nhưng không được yêu cầu SIM-PIN khi trở về từ chế độ máy bay.

Xin đừng không nhầm lẫn điều này với "bảo vệ phím": Tôi không hỏi về khóa màn hình (PIN / mô hình / mật khẩu). Ở đây tôi biết cách của mình, vì có một API cho các ứng dụng sử dụng (vì vậy tôi có thể tạm thời tắt cái này với Tasker ).

Tôi biết điều này hoạt động với các thiết bị Samsung - nhưng tốt nhất là tôi muốn một giải pháp độc lập với thiết bị phù hợp với tất cả các nhà sản xuất.


2
Có thật không! Hãy để tôi trích dẫn từ câu hỏi trên: Tôi đang tìm cách vô hiệu hóa có chọn lọc điều này - không phải để vô hiệu hóa hoàn toàn việc kiểm tra. Tôi biết nó có thể bị vô hiệu hóa hoàn toàn (đó là những gì tôi hiện đang sử dụng) - nhưng tôi muốn tắt nó chỉ để chuyển trở lại từ chế độ Máy bay, không phải để khởi động thiết bị.
Izzy

Câu trả lời:


1

TUYÊN BỐ TỪ CHỐI

  1. Cái này cần root. Không có cách nào xung quanh đó.
  2. Thiết bị của bạn phải chạy Android 4.1 trở lên
  3. Cách giải quyết này có thể quá cao đối với một số người dùng. Chỉ cố gắng áp dụng nó khi bạn biết những gì bạn đang làm.
  4. Tôi sẽ không chịu trách nhiệm nếu có gì đó không ổn hoặc Ragnarök bắt đầu trong quá trình này. Bạn đang làm điều này với rủi ro của riêng bạn. Tiến hành thận trọng.
  5. Tôi không phải là tác giả của hoặc liên kết với bất kỳ mod nào được đề cập. Tôi chỉ tìm thấy điều này và tôi đang chia sẻ nó vì lợi ích của bạn.

LÀM VIỆC

Tôi đã tìm thấy một cách giải quyết cho vấn đề đang hoạt động tốt trên Samsung Galaxy S2 khi cài đặt Cyanogenmod 10.2 và Dorimanx Kernel 9.41. Các bước cần thiết như sau:

  1. Hãy chắc chắn rằng thiết bị của bạn đã được root.

  2. Tải xuống và cài đặt Xposed Framework Installer .

  3. Khi Xposed yêu cầu root bất cứ nơi nào trong tương lai gần, hãy cấp nó .

  4. Mở ứng dụng và nhấp vào Framework-Tab.

  5. Nhấn vào đây Install/Update.

  6. Khởi động lại .

  7. Tải xuống và cài đặt Jelly Bean 4.x Airplane Mode Helper .

  8. Mở Xposed Framework Installerlại -App và chọn Modules.

  9. Đánh dấu (thiết lập hoạt động) Jelly Bean 4.x Airplane Mode Helper.

  10. Khởi động lại .

  11. Mở Jelly Bean 4.x Airplane Mode Helper.

  12. Đánh dấu (thiết lập hoạt động) Đã bật .

  13. Khởi động lại .

Đó là nó! Chế độ trên máy bay sẽ hoạt động trở lại như trong các phiên bản Android trước đó và không yêu cầu SIM-PIN nữa khi bị tắt. Tuy nhiên, nó vẫn hoạt động khi khởi động, do đó giữ cho thẻ SIM của bạn an toàn. Tôi đã thiết lập quy trình tiết kiệm pin tự động với Cấu hình vị trí Llama tương tự như Cấu hình được mô tả ở đây (Thx a bó, Izzy) và nó hoạt động hoàn hảo.

Chúc may mắn, folks!


1
Cảm ơn rất nhiều cho câu trả lời của bạn! Tôi vừa chỉnh sửa nó để cải thiện định dạng (danh sách) và thêm thực tế là nó yêu cầu JB +. Vì các thiết bị của tôi chưa chạy JB, tôi không thể kiểm tra nó - nhưng tôi nghi ngờ bạn có thể đã bỏ lỡ phần quan trọng nhất của câu hỏi (ít nhất là bạn không đề cập đến nó): Nó có yêu cầu SIM-PIN khi trở về từ Máy bay không chế độ - hoặc có thể được bỏ qua theo cách này?
Izzy

1
Hãy yên tâm, tôi hoàn toàn hiểu được vấn đề của bạn và câu trả lời của tôi chính xác là những gì bạn đang tìm kiếm;) - nó không yêu cầu SIM-PIN khi trở về từ Chế độ trên máy bay, nhưng nó vẫn hoạt động khi khởi động. Do đó, bảo mật của bạn đang được giữ nhưng tập lệnh tiết kiệm pin của bạn đang hoạt động trở lại. Cảm ơn đã nâng cấp định dạng!
FuzzyQ

Tôi đã thêm thông tin quan trọng nhất vì bạn đã đúng - tôi hoàn toàn quên đề cập đến thực tế rằng điều này thực tế loại bỏ nhu cầu mở khóa SIM của bạn sau chế độ máy bay.
FuzzyQ

1
Trong trường hợp này, đó chính xác là những gì tôi đã làm sau: Công việc tự động thực hiện công việc mà không cần can thiệp thủ công, nhưng thiết bị vẫn được bảo vệ khi "khởi tạo" (tức là sau khi khởi động). Thông minh! Tôi upvote nó bây giờ. Vì tôi cũng không thể kiểm tra giải pháp của t0mm13b, tôi phải tin tưởng bạn về "chấp nhận" của tôi: đây có vẻ là giải pháp hứa hẹn nhất (và miễn phí!) Cho đến nay, mặc dù bị giới hạn ở JB +.
Izzy

Bạn biết đấy, thật buồn cười khi tôi đến đó ngay từ đầu. Tôi đã tìm thấy câu hỏi và câu trả lời của bạn cho vấn đề chờ di động và sớm kết thúc với vấn đề chế độ máy bay-SIM-PIN-. Vì tôi đã sử dụng Xposed Framework một thời gian rồi, tôi có ý tưởng tìm kiếm một mô-đun xposed sẽ giải quyết vấn đề này. :)
FuzzyQ

8

Câu trả lời nằm ở nguồn ... có vẻ như là thuộc tính để yêu cầu khóa pin được tích hợp vào build.prophoặc default.prop.

Hãy xem tham chiếu được tìm thấy trong nguồn TelephonyManager , giữa các dòng 735 và 755. Để cho ngắn gọn,

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

Chìa khóa được TelephonyProperties.PROPERTY_SIM_STATEđề cập ở nơi khác , giữa các dòng 94 và 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";

Sau khi tìm kiếm thông qua mã nguồn ở đây trên máy của tôi, tôi sẽ cho bạn biết mức độ thường xuyên của phương thức getSimStatenày, hãy chú ý tên của nguồn java để tìm hiểu về cách nó được tích hợp trong Android, không chỉ trong lớp Telephony mà là nơi khác

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

Những tên tập tin đó có cho một manh mối, yup, trong màn hình khóa ...

Học thuyết

Điều này đòi hỏi root vào thời điểm này, bằng cách gọi adb shellvà gọi getpropsetpropđể làm điều này, phần duy nhất là cái này, bằng cách gọi

adb shell getprop sẽ lấy lại thông tin thích hợp như hình dưới đây

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

Tài sản tinh tế này dường như vẫn tồn tại một cách linh hoạt trong một cửa hàng tài sản sao lưu, kể từ thời điểm bật nguồn và được điều chỉnh cho phù hợp, dựa trên số lượng vật phẩm, dịch vụ và không đề cập đến việc vô tình làm rơi chiếc điện thoại có thể làm mất thẻ sim đầu đọc của nó sẽ thay đổi trạng thái của thẻ thành " chưa sẵn sàng " hoặc " chưa biết ". ( ref: system / core / include / cutils / property.hsystem / core / toolbox / [ getprop | setprop ] .c)

Bây giờ, về mặt lý thuyết, bằng cách gọi setprop trước khi khóa màn hình, nó có thể bị phá vỡ tạm thời, nhưng sau đó, một lần nữa, điều đó có thể được đặt lại bởi lớp điện thoại! Đừng thử điều đó! Điều này dẫn đến điều này ...

Phần kết luận

Cách duy nhất có thể tắt, là vô hiệu hóa yêu cầu khóa pin trên thẻ sim thực tế . Đó là nơi lưu trữ cờ bit "ma thuật" trên đó, trong đó lớp RIL của điện thoại đọc nó thông qua thư viện htc / samsung / Qualcomm độc quyền và điều đó sẽ ngăn chặn sự tồn tại của tài sản "PIN_REQUIRED" thông qua các lớp của Android.

Một cách giải quyết khả thi, chỉ dành cho Nhà phát triển Android :)

Điều này sẽ yêu cầu hack và biên dịch lại nguồn. Đối với chế độ máy bay, khi vào chế độ đó và rời khỏi chế độ máy bay, tài sản có thể được tách ra thành hai, GSM.sim.state có thể được giữ nguyên, nhưng nghĩ ra một thuộc tính khác, như thế này, GSM.sim.state. Airplane.mode và gán một giá trị dọc theo các dòng SIM_STATE_PIN_NOT_REQUIREDvà sửa đổi kiểm tra chế độ máy bay, để đọc thuộc tính đó và nếu được đặt thành đó, không hiển thị hộp thoại pin, nếu không, thường sẽ nhắc nó.


Cảm ơn bạn đã giải thích chi tiết, t0mm13b! Vì vậy, chúng tôi phải giả định rằng Samsung và LG đã thay đổi mã ở tất cả các địa điểm bạn đã đề cập - nếu các báo cáo tôi nhận được về các thiết bị Samsung và LG (nơi mọi người nói rằng họ có thể vô hiệu hóa kiểm tra mã PIN của SIM, như được mô tả trong câu hỏi của tôi) chính xác?
Izzy

Cảm ơn một lần nữa! Nếu bạn có thể nói là tìm thấy cài đặt đó trong CM và kể từ khi có trong đó, đây sẽ là một trợ giúp lớn - vì CM có sẵn cho nhiều thiết bị :) Các thiết bị của tôi đều chạy CM 7.x, vì vậy tôi có thể xác minh - mặc dù tôi chưa gặp phải một cài đặt như vậy (đó là lý do tại sao tôi yêu cầu nơi cần tìm;)
Izzy

Thử Cài đặt> Cài đặt vị trí & bảo mật, khóa thẻ Sim?
t0mm13b

Tôi đã phải xóa bình luận đó là câu trả lời cho câu hỏi của bạn trong đó, nó hiện diện trong các nguồn AOSP, (lần đầu tiên đã thấy nó vì thẻ sim của tôi đã được mở khóa và dù sao cũng không có khóa yêu cầu pin)
t0mm13b

1
Không được xác nhận cho Gingerbread (CM7.2 trên Motorola Droid² / Milestone² của tôi). Đúng, PIN SIM có thể được định cấu hình tại nơi được mô tả - nhưng chỉ bật / tắt, không chọn lọc cho "chỉ khi bật nguồn". Lấy làm tiếc.
Izzy

3

Tôi không chắc chắn rằng bạn cần phải làm những gì bạn đang cố gắng làm.

Bạn có thể, thay vào đó:

  • Thiết lập hai Taskertác vụ để bật / tắt mọi thứ mà Airplanechế độ bật / tắt thực hiện.
  • Đừng bao giờ sử dụng Airplanechế độ của bạn . Sử dụng Taskernhiệm vụ của bạn .

Bạn có thể phải xem liệu có ứng dụng nào được bật để tự động bật radio phần cứng không. Theo dõi để xem nếu một ứng dụng cố gắng đồng bộ hóa nền hay bất cứ điều gì, họ có thể cố gắng bật radio bị vô hiệu hóa. Nếu vậy, hãy tắt khả năng của ứng dụng đó để tự động bật WiFi của bạn. Tôi nói điều này bởi vì Airplanechế độ chắc chắn đã dừng các kết nối WiFi bất ngờ trước đây nhưng không còn nữa, nếu bạn thử câu trả lời này.

Bạn cũng có thể thiết lập Taskerđể luôn đi vào Airplanechế độ khi tắt máy. Bằng cách đó bạn sẽ thấy Khóa PIN khi khởi động.


Cảm ơn bạn, zero2cx - nhưng Tôi không yêu cầu cho tôi yên, và không đặc biệt đối với Tasker (Tôi nhận thức được thực tế rằng tôi có thể vô hiệu hóa mọi thứ riêng biệt ở đây, nhưng vô hiệu vô tuyến tế bào riêng rẽ không làm việc với Milestone² của tôi). Trong câu trả lời câu hỏi liên kết, tôi cũng đề cập đến hai ứng dụng khác. Họ yêu cầu mã PIN phải được nhập hoặc vô hiệu hóa, vì họ sử dụng chế độ máy bay. Vì vậy, hãy hiểu rằng tôi không muốn có một cụ Tasker giải pháp (như nhiều tìm Tasker quá phức tạp), mà đúng hơn là một giải pháp tổng quát để làm những gì tôi yêu cầu: vô hiệu hóa yêu cầu mã PIN khi trở về từ chỉ ở chế độ máy bay.
Izzy

Được chứ. Tôi đang bối rối, sau đó. Có một cách để chuyển đổi nó bằng phần mềm, nhưng theo một cách khác nhiều sắc thái hơn. Samsung cho phép bạn làm điều đó như thế nào?
zero2cx

Tôi không thể nói (không có thiết bị Samsung). Nhưng tôi đã nhận được báo cáo rằng nó có thể thực hiện được trên nhiều (tất cả?) Các thiết bị Samsung cũng như với LG. Trên Milmark² của tôi, tôi đã không kiểm tra rõ ràng, vì SIM hiện tại của tôi nằm trong HTC Buzz / Wildfire của tôi trước đây, tôi đã phải vô hiệu hóa hoàn toàn SIM-PIN cho mục đích này.
Izzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.