Устройство BluetoothDevice.setPin не подключается

#android #android-bluetooth

Вопрос:

Кажется, я не могу заставить свое приложение подключиться к устройству Bluetooth и программно установить PIN-код.

Я пытался не прерывать трансляцию, и это не помогло. Если я не выполню BroadcastReceiver это , он предложит пользователю ввести PIN-код, и он успешно соединится. Но если я попытаюсь установить PIN-код напрямую, это никогда не сработает. И я даже попытался указать byteArray кодировку в UTF-8, но безрезультатно. Я даже пытался вручную настроить byteArray и все равно ничего.

Кроме того, я объявил все необходимые разрешения в Манифесте:

  • BLUETOOTH_АДМИН
  • блютус
  • BLUETOOTH-СОЕДИНЕНИЕ
  • BLUETOOTH_SCAN
  • ACCESS_COARSE_LOCATION
  • ACCESS_FINE_LOCATION
  • ACCESS_BACKGROUND_LOCATION

Что я делаю не так?

 class MainActivity: AppCompatActivity() {

    private var broadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(p0: Context?, p1: Intent?) {
            var device: BluetoothDevice? = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
           device?.setPin("1234".toByteArray())
            this.abortBroadcast()
        }}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.devicelist)
        ActivityCompat.requestPermissions(this,arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),1)
        registerReceiver(broadcastReceiver, IntentFilter(BluetoothDevice.ACTION_PAIRING_REQUEST))

        findViewById<Button>(R.id.button3).setOnClickListener{
        var ble = BluetoothAdapter.getDefaultAdapter()
        var dev = ble.getRemoteDevice("00:20:04:32:8A:EE")
        dev.createBond()
        }

}}
 

Комментарии:

1. Вы также запрашивали разрешения на выполнение для разрешения на фоновое расположение? Только объявления их в манифесте не всегда достаточно. Пожалуйста, взгляните на это, если это может быть полезно: github.com/warting/permissions-ui