我创建了一个程序,每次收到来电时都会显示一个祝酒词。它在我试过的所有手机上运行正常 - 在来电屏幕上显示吐司。
昨天我将我的HTC Desire S更新为Sense 3.0(Android 2.3.5),显然它有一个新的锁定屏幕,显示来电。打开锁定屏幕将带我进入“原始”来电屏幕并接听电话。在电话接听之前,我还可以在原始通话屏幕上看到我的祝酒词。
我显示的toast使用自定义布局,并从服务中显示。该服务在来电时从广播接收器接收意图。
我使用以下代码来展示我的祝酒词:
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锁定屏幕上显示toast?
答案 0 :(得分:2)
我认为这个问题有点宽泛。在我的情况下,HTC sense 3.0锁屏不允许显示活动对话框(与Toast消息相同)。当屏幕被解锁时,对话框(从后台服务触发的活动)显示得很好。在HTC感知屏幕锁定上显示消息的唯一方法是使用通知 - 许多人会同意这是一种推荐的方法(比如不要打扰弹出窗口的用户)。缺点是通知性质 - 它将在第二或第二次消失后消失。因此,对于“来电显示”类型的应用程序,用户应该快速从口袋中拉出HTC,如果想要查看谁在呼叫并且这是不合适的。
也许OpenSense SDK包含API,可以在屏幕锁定上显示更长时间的消息。在我第一次看时,我只找到了“感觉风格”标签...
有人建议“以编程方式”解锁手机,然后显示Toast或Dialog。这不是一个“快乐”的解决方案 - 甚至不确定是否可行。
我知道我的帖子不是一个完整的答案,但我希望它能提供有关在HTC sense 3.0锁屏上显示消息的问题的更多细节。
答案 1 :(得分:0)
使用下面的代码
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