Podczas włączania telefonu domyślnie pojawia się prośba o wprowadzenie kodu PIN karty SIM - jest to dobry środek bezpieczeństwa, aby zapobiec ponoszeniu kosztów przez nieznajomych. Teraz to samo dotyczy powrotu z trybu samolotowego: należy ponownie wprowadzić kod PIN karty SIM. Co sprawia, że niektóre energooszczędne urządzenia stają się bezużyteczne: jeśli aplikacja np. Wejdzie w tryb samolotowy po utracie sygnału (patrz: Co to jest tryb gotowości komórki i jak mogę zapobiec zużywaniu baterii? ), Nie będzie mógł wrócić do normalnej pracy bez interakcji użytkownika .
Szukam sposobu na selektywne wyłączenie tej opcji: Aktywuj żądanie PIN podczas włączania urządzenia - ale nie pytaj o PIN-SIM podczas powrotu z trybu samolotowego.
Proszę nie nie mylić tego z „Autoblokada klawiatury”: Nie pytam o blokady ekranu (PIN / wzorzec / hasło). Tutaj wiem, jak sobie radzić, ponieważ istnieje interfejs API dla aplikacji (dzięki czemu mogę np. Tymczasowo wyłączyć to w Tasker ).
Wiem, że to działa z urządzeniami Samsung - ale najlepiej chcę niezależne od urządzenia rozwiązanie, które działa dla wszystkich producentów.
Odpowiedzi:
ZRZECZENIE SIĘ
OBEJŚCIE
Znalazłem obejście problemu, który działa pięknie na Samsungu Galaxy S2 z zainstalowanym Cyanogenmod 10.2 i jądrem Dorimanx 9.41. Niezbędne kroki są następujące:
Upewnij się, że Twoje urządzenie jest zrootowane.
Pobierz i zainstaluj Instalator Xposed Framework .
Gdy Xposed poprosi o rootowanie w dowolnym miejscu w najbliższej przyszłości, udziel go .
Otwórz aplikację i kliknij
Framework
-Tab.Kliknij
Install/Update
.Uruchom ponownie .
Pobierz i zainstaluj Jelly Bean 4.x Tryb samolotowy Helper .
Otwórz
Xposed Framework Installer
ponownie aplikację i wybierzModules
.Zaznacz (ustaw jako aktywne)
Jelly Bean 4.x Airplane Mode Helper
.Uruchom ponownie .
Otwarte
Jelly Bean 4.x Airplane Mode Helper
.Zaznacz (ustaw jako aktywne) Włączone .
Uruchom ponownie .
Otóż to! Tryb samolotowy powinien znów działać, tak jak w poprzednich wersjach Androida, i nie pyta o PIN-SIM już po wyłączeniu. Jednak nadal działa podczas uruchamiania, dzięki czemu karta SIM jest nieco bezpieczna. Ustawiłem zautomatyzowaną procedurę oszczędzania baterii z profilami lokalizacji Llama podobnymi do opisywanych tutaj (Dzięki, Izzy) i działa ona bezbłędnie.
Powodzenia, ludzie!
źródło
Odpowiedź leży w źródle ... wydaje się, że właściwość żądania blokady pinów jest wbudowana w
build.prop
lubdefault.prop
.Spójrz na odniesienie znalezione w źródle TelephonyManager , pomiędzy liniami 735 i 755. Dla zwięzłości,
Klucz jest
TelephonyProperties.PROPERTY_SIM_STATE
określony w innym miejscu , między wierszami 94 i 98.Po przeszukaniu kodu źródłowego tutaj na moim komputerze, dam ci wyobrażenie o tym, jak często ta metoda
getSimState
jest wywoływana, zwróć uwagę na nazwy źródła Java, aby dowiedzieć się, w jaki sposób jest on zintegrowany z Androidem, nie tylko w warstwie telefonicznej, ale gdzie indziej.Czy te nazwy plików dają wskazówkę, tak, na ekranie blokady ...
Teoria
Wymaga to pierwiastek w tym momencie, przez wywoływanie
adb shell
i powołaniegetprop
isetprop
to zrobić, to tylko część tego, powołującadb shell getprop
odzyska odpowiednie informacje, jak pokazano poniżejTa subtelna właściwość wydaje się być dynamicznie utrwalana w magazynie właściwości zaplecza od momentu włączenia i jest odpowiednio dostosowywana, w zależności od liczby rzeczy, usługi, nie mówiąc już o przypadkowym upuszczeniu słuchawki, która może spowodować wyrzucenie karty SIM z karty czytnik, który zmieni stan karty na „ niegotowy ” lub „ nieznany ”. ( patrz: system / core / include / cutils / properties.h oraz system / core / toolbox / [ getprop | setprop ] .c)
W tym momencie teoretycznie, wywołując setprop przed zablokowaniem ekranu, można go tymczasowo obejść, ale z drugiej strony może zostać zresetowany przez warstwę telefonii! Nie próbowałem tego! Co prowadzi do tego ...
Wniosek
Jedyny sposób ten może być wyłączony, jest skutecznie wyłączyć żądanie pin-lock na rzeczywiste karty SIM . W tym miejscu przechowywana jest „magiczna” flaga bitowa, w której warstwa RIL telefonii odczytuje ją za pośrednictwem zastrzeżonej biblioteki htc / samsung / Qualcomm, a to zapobiegałoby propagacji trwałości właściwości „PIN_REQUIRED” w górę przez warstwy Androida.
Możliwe obejście, tylko dla programistów Androida :)
Wymagałoby to włamania i ponownej kompilacji źródła. Dla trybu samolotowego, przy wchodzeniu w ten tryb i opuszczaniu trybu samolotowego, właściwość może być podzielona na dwie części, stan gsm.sim. można pozostawić bez zmian , ale należy opracować inną właściwość, coś w tym rodzaju, stan gsm.sim.state. airplane.mode i przypisz wartość wzdłuż linii
SIM_STATE_PIN_NOT_REQUIRED
i zmodyfikuj sprawdzanie trybu samolotowego, aby odczytać tę właściwość, a jeśli jest ustawiona na to, nie pokazuj okna dialogowego pinezki, w przeciwnym razie, jak zwykle, monituj.źródło
Nie jestem pewien, czy musisz robić to, co próbujesz zrobić.
Zamiast tego możesz:
Tasker
zadania, aby włączyć / wyłączyć wszystko, coAirplane
robi tryb włączania / wyłączania .Airplane
trybu. Wykorzystaj swojeTasker
zadania.Może być konieczne sprawdzenie, czy jakieś aplikacje są włączone, aby automatycznie włączyć sprzętowe radio. Sprawdź, czy aplikacja próbuje synchronizować w tle lub cokolwiek innego, może próbować włączyć wyłączone radia. Jeśli tak, wyłącz zdolność tej aplikacji do automatycznego włączania np. Wi-Fi. Mówię to, ponieważ
Airplane
tryb z pewnością zatrzymał nieoczekiwane połączenia WiFi wcześniej, ale już nie, jeśli spróbujesz tej odpowiedzi.Możesz również ustawić,
Tasker
aby zawsze przechodził wAirplane
tryb przy wyłączaniu. W ten sposób zobaczysz blokadę PIN podczas uruchamiania.źródło