При включении телефона по умолчанию требуется ввести SIM-PIN-код, что является хорошей мерой безопасности, чтобы «чужие» не вызывали у вас расходы. То же самое относится и к возвращению из режима полета: снова нужно ввести SIM-PIN. Что делает некоторые энергосберегающие устройства бесполезными: если приложение, например, переходит в режим полета при потере сигнала (см. « Что такое режим ожидания ячейки и как я могу предотвратить его разрядку батареи?» ), Оно не сможет вернуться к нормальной работе без участия пользователя. ,
Я ищу способ выборочного отключения этого: активировать запрос PIN-кода при включении устройства, но не запрашивать SIM-PIN при выходе из режима полета.
Пожалуйста, не путайте это с «keyguard»: я не спрашиваю о блокировке экрана (ПИН / шаблон / пароль). Здесь я знаю свой путь, поскольку есть API для приложений (например, я могу временно отключить это с помощью Tasker ).
Я знаю, что это работает с устройствами Samsung, но я хочу, чтобы устройство было независимым от всех производителей.
Ответы:
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
Временное решение
Я нашел обходной путь для проблемы, которая прекрасно работает на Samsung Galaxy S2 с установленным Cyanogenmod 10.2 и Dorimanx Kernel 9.41. Необходимые шаги следующие:
Убедитесь, что ваше устройство рутировано.
Загрузите и установите Xposed Framework Installer .
Когда Xposed запрашивает root в ближайшем будущем, предоставьте его .
Откройте приложение и нажмите
Framework
-Tab.Нажмите
Install/Update
.Reboot .
Загрузите и установите Jelly Bean 4.x Помощник в режиме полета .
Xposed Framework Installer
Снова откройте -App и выберитеModules
.Тик (активен)
Jelly Bean 4.x Airplane Mode Helper
.Reboot .
Open
Jelly Bean 4.x Airplane Mode Helper
.Галочка (активна) Включена .
Reboot .
Это оно! Режим полета должен работать снова, как в предыдущих версиях Android, и больше не запрашивает SIM-PIN при выключении. Это все еще происходит при запуске, тем самым обеспечивая безопасность вашей SIM-карты. Я настроил автоматическую процедуру экономии заряда батареи с помощью Llama Location Profiles, аналогичную описанной здесь (Thx a Связка, Иззи), и она работает безупречно.
Удачи, ребята!
источник
Ответ лежит в источнике ... кажется, что свойство запрашивать пин-блокировку встроено в
build.prop
илиdefault.prop
.Посмотрите на ссылку, найденную в источнике TelephonyManager , между строками 735 и 755. Для краткости,
Ключ,
TelephonyProperties.PROPERTY_SIM_STATE
который упоминается в другом месте , между строками 94 и 98.После поиска по исходному коду здесь, на моей машине, я дам вам представление о том, как часто
getSimState
вызывается этот метод , обратите внимание на имена java-источника, чтобы понять, как он интегрирован в Android, не только в слой телефонии, но и в другом месте.Эти имена файлов дают подсказку, да, на экране блокировки ...
теория
Это требует root на этом этапе, вызывая
adb shell
и вызываяgetprop
иsetprop
для этого, единственная часть это, вызываяadb shell getprop
вернет соответствующую информацию, как показано нижеЭто тонкое свойство, по-видимому, динамически сохраняется в резервном хранилище свойств с момента включения и корректируется соответствующим образом в зависимости от количества вещей, услуги, не говоря уже о случайном падении телефона, которое может выбить сим-карту из его считыватель, который изменит состояние карты на « не готов » или « неизвестен ». ( ссылка: 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. plane.mode и присвойте значение по линиям
SIM_STATE_PIN_NOT_REQUIRED
и измените проверку режима самолета, чтобы прочитать это свойство и, если оно установлено, не показывать диалоговое окно булавки, в противном случае, как обычно, запрашивать его.источник
Я не уверен, что вам нужно делать то, что вы пытаетесь сделать.
Вместо этого вы можете:
Tasker
задачи для включения / выключения всего, чтоAirplane
делает режим включения / выключения .Airplane
режим. Используйте своиTasker
задачи.Возможно, вам придется посмотреть, включены ли какие-либо приложения для автоматического включения аппаратного радио. Посмотрите, пытается ли приложение выполнить фоновую синхронизацию или что-то подобное, они могут попытаться включить отключенные радиостанции. Если это так, отключите способность этого приложения автоматически включать, например, ваш WiFi. Я говорю это, потому что
Airplane
режим определенно останавливал неожиданные соединения WiFi раньше, но не больше, если вы попробуете этот ответ.Вы также можете настроить,
Tasker
чтобы всегда переходить вAirplane
режим при выключении. Таким образом, вы увидите блокировку PIN-кода во время загрузки.источник