是否存在可能导致createRfcommSocketToServiceRecord
抛出的任何情况(包括Android 4.2中的任何已知错误):
java.lang.SecurityException: Need BLUETOOTH_ADMIN permission: Neither user 10043 nor current process has android.permission.BLUETOOTH_ADMIN.
at android.os.Parcel.readException(Parcel.java:1425)
at android.os.Parcel.readException(Parcel.java:1379)
at android.bluetooth.IBluetoothSocket$Stub$Proxy.initSocket(IBluetoothSocket.java:230)
at android.bluetooth.BluetoothSocket.<init>(BluetoothSocket.java:225)
at android.bluetooth.BluetoothDevice.createRfcommSocketToServiceRecord(BluetoothDevice.java:948)
createRfcommSocketToServiceRecord
被记录为here,仅需要BLUETOOTH
权限,而不是BLUETOOTH_ADMIN
权限。这似乎是合理的。
我的应用只有BLUETOOTH
权限,而且我从未见过它会让自己崩溃。但是今天我收到了一个运行Android 4.2的Xperia C(C2305)的崩溃报告以及上面的堆栈跟踪。
这里有什么合理的行动方案?由于我不愿意添加更多权限,我可能必须抓住SecurityException
并将其作为连接失败报告给用户。