Как определить, нужен ли PIN-код для разблокировки сима?

В андроиде есть опция "Блокировка SIM-карты", "Настройки / Расположение и настройки безопасности".

Необходимо ввести PIN-код после загрузки, если опция включена.

Существует ли какой-либо программный метод для определения необходимости PIN-кода? (не текущее состояние сима, а значение параметра настройки ex: true/false)

2 ответа

Решение

Вы можете использовать следующий класс: TelephonyManager http://developer.android.com/reference/android/telephony/TelephonyManager.html

Вы не создаете экземпляр этого класса напрямую; вместо этого вы получаете ссылку на экземпляр через Context.getSystemService(Context.TELEPHONY_SERVICE)

TelephonyManager manager = (TelephonyManager) Context.getSystemService(Context.TELEPHONY_SERVICE);
int state = manager.getSimState();
if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED)
{
         //PIN/PUK is required
}

После комментариев это окончательная версия:

TelephonyManager tm = 
(TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
       Class clazz = Class.forName(tm.getClass().getName());
       Method m = clazz.getDeclaredMethod("getITelephony");
       m.setAccessible(true);
       ITelephony it = (ITelephony) m.invoke(tm);
       if(it.isSimPinEnabled())
       {
                //This should work;
       }

Поскольку getSimLockEnabled всегда возвращает false для меня, я должен был найти другой способ сделать это.

См. /questions/13782659/obnaruzhenie-izmenenij-blokirovka-sim-kartyi-v-menyu-nastrojki-bezopasnost-nastrojka-blokirovki-sim-kartyi/13782673#13782673 для ответа.

Другие вопросы по тегам