відключити PIN-запит після літакового режиму


10

Під час увімкнення телефону за замовчуванням пропонується ввести PIN-код SIM - це хороший захід безпеки, щоб "сторонні люди" не спричинили вам витрат. Тепер те ж саме стосується повернення з літакового режиму: потрібно знову ввести SIM-PIN. Що робить певні енергозбереження марними: якщо програма, наприклад, переходить у режим літака при втраті сигналу (див.: Що таке резервне керування стільником і як я можу запобігти його поїданню батареї? ), Він не зможе повернутися до нормальної роботи без взаємодії з користувачем. .

Я шукаю спосіб вибіркового відключення цього: Увімкніть запит PIN-коду під час живлення пристрою, але не вимагати отримання PIN-коду SIM-карти при поверненні з літакового режиму.

Будь ласка, не плутайте це з "клавіатурою": я не запитую про блокування екрана (PIN / шаблон / пароль). Тут я знаю свій шлях, оскільки існує API для додатків (тому я можу, наприклад, тимчасово відключити це за допомогою Tasker ).

Я знаю, що це працює з пристроями Samsung, але я бажаю, щоб рішення пристрою було незалежним, яке працює для всіх виробників.


2
Дійсно! Дозвольте цитувати з вищезазначеного питання: я шукаю спосіб вибірково відключити це - не повністю відключити чек. Я знаю, що його можна повністю відключити (що я зараз використовую), але я хочу відключити його лише для переключення з режиму літака, а не для запуску пристрою.
Іззі

Відповіді:


1

ВІДХОДЖЕННЯ

  1. Для цього потрібен корінь. Ні в якому разі не навколо цього.
  2. На вашому пристрої має працювати Android 4.1+
  3. Для деяких користувачів це рішення може бути занадто розвиненим. Намагайтеся застосовувати його лише тоді, коли ви знаєте, що робите.
  4. Я не несу відповідальності, якщо щось піде не так, або Рагнарок почне процес. Ви робите це на власний ризик. Продовжуйте обережно.
  5. Я не є автором або іншим чином пов'язаний з будь-яким із згаданих мод. Я просто знайшов це і поділюся ним на вашу користь.

РОБОТА

Я знайшов вирішення проблеми, яка прекрасно працює на Samsung Galaxy S2 із встановленими Cyanogenmod 10.2 та Dorimanx Kernel 9.41. Необхідні кроки такі:

  1. Переконайтеся, що ваш пристрій вкоренився.

  2. Завантажте та встановіть інсталятор Xposed Framework .

  3. Коли Xposed запитує корінь у будь-якому місці найближчим часом, надайте його .

  4. Відкрийте додаток і натисніть на Framework-Tab.

  5. Клацніть Install/Update.

  6. Перезавантажте .

  7. Завантажте та встановіть помічник Helly Bean 4.x Airplane Mode Helper .

  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 купу, Izzy), і вона працює бездоганно.

Удачі, люди!


1
Дякую за вашу відповідь! Я щойно відредагував його для покращення форматування (списків) і додав той факт, що йому потрібен JB +. Оскільки на моїх пристроях ще не працює JB, я не можу його перевірити - але я підозрюю, що ви, можливо, пропустили найважливішу частину питання (принаймні, про це не згадуєте): чи запитує він SIM-PIN, повертаючись із літака режим - чи це можна пропустити таким чином?
Іззі

1
Будьте впевнені, я повністю зрозумів вашу проблему, і моя відповідь - саме те, що ви шукали;) - вона не запитує PIN-код SIM-карти при поверненні з режиму літака, але все одно це робить під час завантаження. Таким чином, ваша безпека зберігається, але сценарій економії акумулятора знову працює. Дякуємо за оновлення форматування!
FuzzyQ

Я додав найважливішу інформацію, як ви мали рацію - я зовсім забув згадати той факт, що це насправді усуває необхідність знову розблокувати SIM-карту після режиму літака.
FuzzyQ

1
У цьому випадку це саме те , що я був після: Автоматизовані завдання виконують роботу без ручного втручання, але пристрій все ще захищений, коли йдеться про "ініціалізацію" (тобто після завантаження). Відмінно! Я зараз це схвалюю. Оскільки я також не можу перевірити рішення t0mm13b, я мушу довіряти тобі щодо мого "прийняття": це виглядає як найбільш перспективне (і безкоштовне!) Рішення досі, хоча воно обмежується JB +.
Іззі

Знаєте, смішно, як я потрапив туди в першу чергу. Я знайшов ваше запитання та відповідь на проблему очікування стільникового зв'язку і незабаром опинився в режимі літака-SIM-PIN-проблема. Оскільки я вже деякий час використовую Xposed Framework, у мене виникла ідея шукати модуль xposed, який би вирішував цю проблему. :)
FuzzyQ

8

Відповідь лежить у джерелі ... здається, що властивість запитувати pin-lock вбудовано в build.propабо default.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викликається, зауважте назви джерела java, щоб зрозуміти, як його інтегрувати в 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() {

Ці імена файлів дають підказку, так, на заблокованому екрані ...

Теорія

Для цього потрібен корінь у цій точці, викликаючи adb shellі виклику, getpropі setpropзробити це, єдиною частиною є це, шляхом виклику

adb shell getprop поверне відповідну інформацію, як показано нижче

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

Це тонке властивість, здається, динамічно зберігається в резервному магазині властивостей, починаючи з моменту вмикання, і відповідно регулюється, виходячи з кількості речей, послуг і не кажучи вже про випадкове викидання слухавки, що може вибити сім-карту з його читач, який змінив би стан картки на " не готовий " або " невідомий ". ( ref: system / 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! Отже, ми повинні припустити, що Samsung та LG змінили код у всіх згаданих вами місцях - якщо у мене з’явилися повідомлення про пристрої Samsung та LG (де люди сказали, що можуть відключити перевірку PIN-коду SIM-карти окремо, як це описано в моєму запитанні) правильно?
Іззі

Знову дякую! Якщо ви могли б сказати, що слід знайти цей параметр у CM, а оскільки коли він знаходиться там, це вже буде великою допомогою - оскільки CM доступний для багатьох пристроїв :) Мої пристрої працюють на CM 7.x, тому я міг би переконатися - хоча я ще не стикався з такою обстановкою (саме тому я прошу, куди подивитися;)
Izzy

Спробуйте налаштування> Параметри розташування та безпеки, блокування SIM-картки?
t0mm13b

Мені довелося видалити коментар, який був відповіддю на ваше запитання там же, його присутні в джерелах AOSP, (перший раз я бачив це, як моя сим-карта вже розблокована і все-таки без блокування запиту на штифти)
t0mm13b

1
Не підтверджено для пряників (CM7.2 на моєму Motorola Droid² / віховий проміжок²). Правда, PIN-код SIM можна налаштувати в описаному місці - але лише увімкнено / вимкнено, не вибірково для "лише при включенні". Вибачте.
Іззі

3

Я не впевнений, що вам потрібно робити те, що ви намагаєтеся зробити.

Ви можете замість цього:

  • Постановіть два Taskerзавдання, щоб увімкнути / вимкнути все, що Airplaneробить режим включення / відключення .
  • Ніколи не використовуйте власне свій Airplaneрежим. Використовуйте свої Taskerзавдання.

Можливо, вам доведеться перевірити, чи ввімкнено якісь додатки для автоматичного включення апаратного радіо. Перегляньте, чи програма намагається синхронізувати фонову синхронізацію чи будь-що інше, вони можуть спробувати включити відключені радіостанції. Якщо це так, вимкніть можливість цього додатка автоматично включати, наприклад, WiFi. Я говорю це тому, що Airplaneрежим, безумовно, зупинив несподівані з'єднання Wi-Fi раніше, але не більше, якщо ви спробуєте цю відповідь.

Ви також можете налаштувати Taskerзавжди переходити в Airplaneрежим роботи при відключенні. Таким чином, ви побачили блокування PIN-коду під час завантаження.


Дякую, zero2cx - але я не прошу лише мене, і не особливо для Tasker (я знаю про те, що тут я могла відключити речі окремо; але відключення стільникового радіо окремо не працює з моїм Milestone²). У відповіді на пов'язані запитання я також згадую два інших додатки. Як повідомляється, вони вимагають ввести або відключити PIN-код, оскільки вони використовують режим літака. Тому, будь ласка, зрозумійте, що я не хочу конкретного рішення Tasker (оскільки багато хто вважає Tasker занадто складним), а скоріше загального рішення, щоб зробити те, про що я попросив: відключити запит PIN-коду під час повернення лише з режиму літака.
Іззі

Добре. Я тоді спотикався. Має бути спосіб переключити його за допомогою програмного забезпечення, але більш нюансованим способом. Як Samsung дозволяє вам це робити?
zero2cx

Я не можу сказати (немає пристрою Samsung). Але я отримую повідомлення про те, що це можливо на багатьох (усіх?) Пристроях Samsung, а також на LG. На своєму Milestone² я чітко не перевіряв, оскільки моя поточна SIM-карта була раніше в моєму HTC Buzz / Wildfire, чи потрібно було повністю відключити SIM-код для цієї мети.
Іззі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.