BroadcastReceiver无法启动

时间:2018-12-12 08:43:26

标签: java android bluetooth android-broadcastreceiver

我正在练习一个蓝牙应用程序,实际上我已经完成了诸如用户界面打开,关闭,获取MAC地址和已保存设备的名称之类的事情,问题是实际上我想查找其他设备,问题是实际上没有输入该方法:

  

私有最终BroadcastReceiver mReceive

//buscar nuevos
public void nuevo(View v) {

    if (bluetooth.isEnabled()) {

        // Register the BroadcastReceiver
        IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
        registerReceiver(mReceiver, filter);


        Log.d(TAG, "SE HA FINALIZADO EXITOSAMENTE LA ETAPA UNO");

    } else {

        // bluetooth is off so can't get
        Toast.makeText(this, "Active primero el bluetooth", Toast.LENGTH_SHORT).show();

    }
}

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {

    public void onReceive(Context context, Intent intent) {

        Log.d(TAG, "INICIANDO LA ETAPA DOS");

        String action = intent.getAction();
        // When discovery finds a device
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            // Get the BluetoothDevice object from the Intent
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

            // Add the name and address to an array adapter to show in a ListView
            txt2.append(device.getName() + "\n" + device.getAddress());

            Log.d(TAG, "ETAPA DOS FINALIZADA");
        }
    }
};

我真的在其中呆了几个小时。

2 个答案:

答案 0 :(得分:0)

在哪里调用nuevo(View v)。除非调用方法,否则您的接收器未注册,将无法使用。尝试在onresume()中注册接收者。

答案 1 :(得分:0)

我非常失望的是,在20多个小时后,我只有2个答案,没有人可以绝对地找到答案,我一直在搜索,直到发现问题出在权限上,在Android 5.0之后,该设备需要在执行时再次检查权限,添加此行。

  

ActivityCompat.requestPermissions(此为新   字符串[] {Manifest.permission.ACCESS_FINE_LOCATION,   Manifest.permission.ACCESS_COARSE_LOCATION},1001);

之前

  

bluetooth.startDiscovery();

但是我将其留在这里以避免将来有人像我一样试图发现问题而失去超过24小时的机会。