Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用对话框阻止Android线程_Java_Android_Multithreading - Fatal编程技术网

Java 使用对话框阻止Android线程

Java 使用对话框阻止Android线程,java,android,multithreading,Java,Android,Multithreading,我有一个Android应用程序,可以自由连接蓝牙设备。当我尝试连接到未与手机配对的设备时,一个对话框将提示用户输入密钥。密码是已知的,但由于没有通过编程输入密码的方法(至少在标准的Android API中),因此必须向用户显示密码,然后输入密码 我现在拥有的是一个线程,它通过抓取BluetoothSocket并在其上调用.connect()来启动连接。如果需要配对,则该调用将被阻止,直到用户在对话框中输入密钥 为了抢占这一点,我在活动的处理程序中添加了一些显示对话框的内容。在发送消息之前,我创建

我有一个Android应用程序,可以自由连接蓝牙设备。当我尝试连接到未与手机配对的设备时,一个对话框将提示用户输入密钥。密码是已知的,但由于没有通过编程输入密码的方法(至少在标准的Android API中),因此必须向用户显示密码,然后输入密码

我现在拥有的是一个线程,它通过抓取
BluetoothSocket
并在其上调用
.connect()
来启动连接。如果需要配对,则该调用将被阻止,直到用户在对话框中输入密钥

为了抢占这一点,我在活动的处理程序中添加了一些显示对话框的内容。在发送消息之前,我创建了一个虚拟对象来传递消息,在发送消息和尝试连接之间,我在消息上调用了
.wait()
,认为在收到对话框中的
OnClick
后,我可以
.notify()
,但是,我无法在内部
AlertDialog
类中引用已处理的消息,正如中的问题一样

我可以让它回拨到持有线程的类,但它似乎有点笨重,导致我的核心问题:我的结构从根本上被打破了吗?我该怎么做呢


建议使用通知系统,但此处的设计似乎更好,将密钥对话框与另一个对话框镜像。

我认为Romain Guy在您提供的链接中的回答可能会有所帮助。您可以根据需要在活动之间传递信息


我认为你提供的链接中Romain Guy的答案可能会有所帮助。您可以根据需要在活动之间传递信息


不要阻塞,只需实现
接口
并使用它们启动(接口=侦听器)

  • 搜寻
  • 选择一个设备
  • 连接:
  • 如果设备已配对,则连接
  • 如果未配对,则显示对话框,并单击“连接”
  • BWT,我认为您需要扩展对话框,并实现您自己的方法,以保存有关您尝试配对的设备的一些信息,我希望您也实现自己的接口


    不要阻塞,只需实现
    接口
    并使用它们启动(interface=listener)

  • 搜寻
  • 选择一个设备
  • 连接:
  • 如果设备已配对,则连接
  • 如果未配对,则显示对话框,并单击“连接”
  • BWT,我认为您需要扩展对话框,并实现您自己的方法,以保存有关您尝试配对的设备的一些信息,我希望您也实现自己的接口