我正在开发的应用程序必须具有使用默认引脚连接到特定蓝牙设备的能力。为此,我编写了以下方法:
public static void pair( BluetoothDevice device ) {
if ( ! Bluetooth.paired.contains( device ) ) {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive( Context context , Intent intent ) {
if ( intent.getAction().equals( BluetoothDevice.ACTION_PAIRING_REQUEST ) ) {
BluetoothDevice device = intent.getParcelableExtra( BluetoothDevice.EXTRA_DEVICE );
try {
device.getClass().getMethod( "setPin" , byte[].class ).invoke( device , device.getClass().getMethod( "convertPinToBytes" , String.class ).invoke( device , "1234" ) );
} catch ( Exception exception ) {
exception.printStackTrace();
}
Resources.CONTEXT.unregisterReceiver( this );
}
}
};
Resources.CONTEXT.registerReceiver( receiver , new IntentFilter( BluetoothDevice.ACTION_PAIRING_REQUEST ) );
try {
device.getClass().getMethod( "createBond" ).invoke( device );
} catch ( Exception exception ) {
exception.printStackTrace();
}
}
}
该方法在大多数情况下都有效:它与给定的蓝牙设备配对,但是蓝牙配对对话框仅显示了不到一秒钟的时间。
该对话框似乎由“ BluetoothPairingDialog.java”表示: https://github.com/aosp-mirror/platform_packages_apps_settings/blob/master/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
所以我要阻止此对话框显示吗?
PS:我知道关于stackoverflow的这个话题还有更多的帖子,但是问者没有得到任何答案,或者他们得到了对我没有帮助的答案。