Тост не отображается на экране блокировки HTC Sense 3.0 - PullRequest
6 голосов
/ 30 ноября 2011

Я создал программу, которая отображает тост каждый раз, когда я получаю входящий звонок. Он работает нормально на всех телефонах, которые я пробовал - тосты отображаются на экране входящего вызова.

Вчера я обновил свой HTC Desire S до Sense 3.0 (Android 2.3.5), и, очевидно, у него появился новый экран блокировки, отображающий входящие звонки. Открытие экрана блокировки приведет меня к «оригинальному» экрану входящего вызова и ответит на звонок. Я также могу увидеть мой тост на экране исходного вызова за секунду до ответа на вызов.

Отображаемый тост использует пользовательский макет и отображается из службы. Служба получает намерение от широковещательного получателя на входящий вызов.

Я использую следующий код, чтобы показать мой тост:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup_toast,  null);

toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.TOP | Gravity.FILL_HORIZONTAL, 0, 0);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(layout);
toast.show();

Есть ли способ установить так, чтобы тост показывался на новом экране блокировки Sense 3.0?

Ответы [ 2 ]

2 голосов
/ 28 января 2012

Я думаю, что проблема немного шире.В моем случае экран блокировки HTC sense 3.0 не позволяет отображать диалоговое окно активности (как и сообщение Toast).Когда экран разблокирован, диалог (активность, запущенная из фоновой службы) отображается просто отлично.Единственный способ отобразить сообщение на экране блокировки HTC Sense - это использовать уведомление - и многие согласятся, что это рекомендуемый подход (например, не мешайте пользователю всплывающими окнами).Недостаток в природе уведомления - он исчезнет через секунду или две.Так что для приложений типа «идентификатор звонящего» пользователь должен быстро вытащить HTC из кармана, если хочет узнать, кто звонит, и это точно не подходит.

Возможно, OpenSense SDK содержит API для включения отображения сообщения о блокировке экрана дляболее длительный период.При первом взгляде я обнаружил только вкладки «в стиле смысла» ...

Кто-то предложил разблокировать телефон "программно", а затем отобразить тост или диалог.Это не «счастливое» решение - и даже не уверен, что это возможно.

Я знаю, что мой пост не является полным ответом, но я надеюсь, что он дает более подробную информацию о проблеме отображения сообщений в HTC sense 3.0экран блокировки.

0 голосов
/ 12 декабря 2011

используйте ниже код

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.listitems,  null);
        Toast toastView = new Toast(getApplicationContext());
        toastView.setView(layout);
        toastView.setDuration(Toast.LENGTH_LONG);
        toastView.setGravity(Gravity.CENTER, 0,0);
        toastView.show();

        it's working fine for me 
...