连接配对密码已知且固定的蓝牙设备时,明明在代码里就可以完成配对,却依旧被系统弹出配对窗口.
这无疑是令人难受的.
所以,便尝试着去屏蔽掉这个配对窗口.
要点:
code:
public class BluetoothConnectReceiver extends BroadcastReceiver
{
private final String TAG = "BluetoothConnectReceiver";
@SuppressLint("NewApi")
@Override
public void onReceive(Context context, Intent intent)
{
Log.i(TAG, TAG + " -> BluetoothConnectReceiver start!");
if (intent.getAction().equals("android.bluetooth.device.action.PAIRING_REQUEST"))
{
BluetoothDevice btDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.i(TAG, TAG + " -> ddd");
try
{
Log.i(TAG, TAG + " -> Device Name = " + btDevice.getName());
if ("Device Name X".equals(btDevice.getName()))
{
abortBroadcast();
ClsUtils.setPin(btDevice.getClass(), btDevice, "password");
ClsUtils.createBond(btDevice.getClass(), btDevice);
ClsUtils.cancelPairingUserInput(btDevice.getClass(), btDevice);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
通过预设的密码直接静默配对.
manifest:
<receiver android:name=".BluetoothConnectReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
</intent-filter>
</receiver>
接收器的优先级设为最高1000,保证最先被广播通知.