我正在玩一些键盘开发,并尝试在按下某个键时显示一个弹出对话框
if (primaryCode == -301) {
AlertDialog mDialog = new AlertDialog.Builder(CONTEXT)
.setTitle("My dialog")
.setMessage("Lets do it.")
.setPositiveButton("ok", null).create();
mDialog.show();
}
但是,问题出在CONTEXT
零件上。在正常的应用程序中,它只是this
. 我也试过getApplicationContext()
and getBaseContext()
,但这些都不起作用->键盘崩溃。
android.view.WindowManager$BadTokenException: 无法添加窗口 -- 令牌 null 不适用于应用程序
所以我想知道我是否必须对InputConnection做些什么:
InputConnection 接口是从 InputMethod 返回到接收其输入的应用程序的通信通道。它用于执行诸如读取光标周围的文本、将文本提交到文本框以及向应用程序发送原始键事件等操作。
到目前为止,我无法弄清楚如何。我绝对知道这是可能的,因为我以前见过。我有人可以指出我正确的方向,这肯定会受到赞赏。
更新:
为了更好地了解我尝试实现的目标,我上传了 Swype 键盘的屏幕截图,它正是这样做的:当在键盘上按下特殊键时会显示一个弹出对话框。