J2ME: заблокировать устройство программно

Я работаю в J2ME. Я хочу заблокировать устройство программно. Должен отображаться только один экран (в котором текстовое поле для пароля и одна кнопка для разблокировки). Если пользователь нажимает кнопку END, она не должна работать.

Например, предположим, что мое приложение работает на устройстве (мобильном), тогда, если какой-либо человек получит это устройство, он должен ввести пароль, тогда он сможет использовать это устройство, иначе он ничего не сможет сделать (ни позвонить, ни что-либо еще).

Пожалуйста, предложите, как я могу это сделать.


person Pushpendra Kuntal    schedule 22.05.2012    source источник
comment
Вам нужно модальное окно или диалог. Поиск модального экрана j2me в вашей любимой поисковой системе должен дать много результатов. Например: java -tips.org/java-me-tips/midp/   -  person pap    schedule 22.05.2012
comment
Г-н Пап, пожалуйста, помогите мне решить функциональность блокировки клавиатуры. Я хочу показать только один экран, и пользователь не должен иметь возможность завершить этот мидлет. Если он введет правильный пароль, то сможет делать все, что захочет. Поэтому, пожалуйста, сосредоточьтесь на функциональности блокировки.   -  person Pushpendra Kuntal    schedule 22.05.2012
comment
Не уверен, что понимаю, что вы имеете в виду под ... сосредоточьтесь на блокировке .... Вы проводили КАКИЕ-ЛИБО исследования по этому вопросу? Вы изучали системные модальные диалоги в J2ME? Я имею в виду, что я мог бы написать все для вас, но обычно я беру деньги за такие вещи. Теперь, если есть какая-то конкретная проблема, с которой вы застряли (кроме того, как мне сделать X), пожалуйста, отредактируйте свой вопрос и добавьте как можно больше деталей, и, возможно, кто-то сможет вам помочь.   -  person pap    schedule 22.05.2012


Ответы (2)


К сожалению, вынужден сообщить вам, что в J2ME это абсолютно невозможно.

person funkybro    schedule 23.05.2012

Я решил эту проблему.

Это основной код для решения этой проблемы: -

 protected void hideNotify() {

        Display.getDisplay(myMidlet).setCurrent(null);
        super.hideNotify();
    Thread thread = new Thread(new Runnable() {
    public void run() {

                Display.getDisplay(myMidlet).setCurrent(new LockScreen(myMidlet));
            }
     }
     );
     thread.start();


    }

Я записываю этот код в свой холст LockScreen. Таким образом, отображается только экран блокировки, если пользователь нажимает кнопку завершения, он снова показывает этот экран блокировки.

person Pushpendra Kuntal    schedule 23.05.2012
comment
правильно... а что делает ваш LockScreen класс? Кроме того, на каком устройстве это работает? Устройства J2ME, такие как Nokia S40/S60/Sony Ericsson/Samsung, имеют аппаратные клавиши (обычно красного цвета). Нажав эту клавишу, вы выйдете из мидлета и вернетесь в родную ОС, откуда вы сможете звонить, отправлять текстовые сообщения или делать все, что захотите. Нет никакого способа переопределить это поведение. - person funkybro; 23.05.2012
comment
Привет, @funkybro, как ты знаешь, некоторые устройства, такие как S60, поддерживают многозадачность, поэтому наше приложение работает в фоновом режиме, даже если мы нажимаем красную кнопку. Итак, когда наш холст LockScreen виден, и мы нажимаем красную кнопку, вызывается hideNotify(), и я добавил поток, который помогает вывести наше приложение на передний план. Таким образом, наша цель достигнута... - person Pushpendra Kuntal; 24.05.2012
comment
S60 имеет кнопку меню, которая при удерживании ведет себя как Alt-Tab, т.е. вы можете переключаться между приложениями. Отсюда можно принудительно закрыть приложения. Мидлет абсолютно не может предотвратить взаимодействие пользователя с устройством. - person funkybro; 24.05.2012