HTC Sense 3.0锁屏界面上没有显示Toast

6
我创建了一个程序,每当我收到来电时都会显示一个toast。在我尝试过的所有手机上都可以正常工作——在来电屏幕上显示toast。
昨天,我将我的HTC Desire S更新到Sense 3.0(Android 2.3.5),显然它有一个新的锁屏界面来显示来电。打开锁屏界面会将我带到“原始”的来电屏幕并接听电话。在通话被接听之前,我还可以在原始来电屏幕上看到我的toast,但仅持续一秒钟左右。
我显示的toast使用自定义布局,并从服务中显示。该服务从广播接收器接收来电意图。
我使用以下代码显示我的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();

有没有办法设置,让toast显示在新的Sense 3.0锁屏界面上?

弹出提示的布局文件长什么样?你是怎么绕过KeyGuard的?!? - bofredo
2个回答

2
我认为问题范围更广。 在我的情况下,HTC Sense 3.0锁屏不允许显示活动对话框(与Toast消息相同)。 当屏幕解锁时,后台服务启动的对话框(活动)可以正常显示。在HTC Sense屏幕锁定上显示消息的唯一方法是使用通知 - 许多人会同意这是推荐的方法(例如不要用弹出窗口打扰用户)。缺点在于通知的本质 - 它会在一两秒钟后消失。因此,对于“来电显示”类型的应用程序,如果用户想要查看谁在呼叫,则应快速从口袋中拿出HTC,这显然不合适。
也许OpenSense SDK包含API以使消息在屏幕锁定上长时间显示。在我第一次看到时,我只发现了“感觉式”选项卡...
有人建议“编程方式”解锁手机,然后显示Toast或Dialog。这不是一个“完美”的解决方案 - 也不确定是否可能。
我知道我的帖子不是一个完整的答案,但我希望它提供了更多关于在HTC Sense 3.0锁屏上显示消息的问题的细节。

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 

你的代码和我的完全一样,除了 setView、setDuration 和 setGravity 的顺序不同。所以这段代码在你使用的带有 Sense 3.0 的 HTC 上可以正常工作? - Franz
问题出在HTC Sense 3.0(Android 2.3.5)上,具体来说。在早期版本上它运行良好。 - Franz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接