所以我试着让这段代码运行
public AcceptThread() {
// Use a temporary object that is later assigned to mmServerSocket,
// because mmServerSocket is final
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothServerSocket tmp = null;
try {
// MY_UUID is the app's UUID string, also used by the client code
tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("Server", MY_UUID);
} catch (IOException e) { }
mmServerSocket = tmp;
}
但是当我从应该分配tmp的行继续时它仍然是null。蓝牙被激活,除了它之外的一切,当我到达它时,它根本不会设置tmp。任何想法为什么不呢?顺便说一下。这个方法不适用于2.2安卓机器,因为它在我的2.2机器上的那一行崩溃但不在我的4.1.2设备上崩溃。
如果需要更多信息以便能够回答,请直接提出要求并尽可能地给予它。
答案 0 :(得分:1)
发现我没有允许该应用程序使用蓝牙如此解决。
答案 1 :(得分:1)
我是Android开发的新手,遇到了同样的问题。如果其他人遇到这个问题,这里会有更多帮助:
因为这是在服务器端发生的,所以在启动接受连接线程之前,请确保已启用可发现性。这可以通过在接收到正确的resultCode时在onActivityResult()方法中启动线程。