我有一个Android应用程序可以自由地连接到蓝牙设备。当我尝试连接到未与手机配对的设备时,会出现一个对话框提示用户输入密码。密码是先验的,但由于没有方法以编程方式输入(至少在标准的Android API中),因此必须向用户显示然后输入密码。
我目前所拥有的是一个通过抓取BluetoothSocket
并在其上调用.connect()
来启动连接的线程。如果需要配对,则该呼叫将被阻止,直到用户在对话框中输入密码。
为了抢占这一点,我在我的activity的处理程序中添加了一些显示对话框的东西。在发送消息之前,我做了一个虚拟对象传递,并在发送消息和尝试连接之间,在其上调用.wait()
,在收到.notify()
之后我知道OnClick
对话框,但我无法引用内部AlertDialog
类中的已处理消息,this question中的问题也是如此。
我可以让它回到持有该线程的类的回调,但它看起来有点笨重,引出了我的核心问题:是我的结构从根本上被打破了吗?我应该怎么做呢?
Another related question建议使用通知系统,但是在这里使用另一个对话框镜像密钥对话框似乎要好得多。
答案 0 :(得分:0)
我认为Romain Guy在您提供的链接中的回答可能有所帮助。您可以根据需要在“活动”之间传递信息。
Dialogs / AlertDialogs: How to "block execution" while dialog is up (.NET-style)
答案 1 :(得分:0)
不要阻止,只使用它们实现Interfaces
和Fire(interface = listener),
BWT,我认为你需要扩展Dialog,并实现你自己的方法,以保存你想要配对的设备的一些信息,我更喜欢你实现自己的接口。