reactjs - React Native:空引用上的'android.bluetooth.bluetoothadapter.isEnabled()'
问题描述
我正在开发一个依赖蓝牙来实现其某些功能的 React-Native 应用程序,据我了解,Android Studio 的模拟器不支持蓝牙。我正在使用的包是react-native-eddystone,它用于与蓝牙低功耗设备一起使用。当我在手机上启动应用程序时,它会提示我允许使用蓝牙并且工作正常,但是当我使用模拟器时它从一开始就崩溃了。这是AndroidManifets.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
</manifest>
这是错误的屏幕截图:
编辑:错误发生在 EddystoneModule.java 中:
@ReactMethod
public void startScanning() {
ScanFilter serviceFilter = new ScanFilter.Builder().setServiceUuid(SERVICE_UUID).build();
ScanFilter configurationFilter = new ScanFilter.Builder().setServiceUuid(CONFIGURATION_UUID).build();
final List<ScanFilter> filters = new ArrayList<>();
filters.add(serviceFilter);
filters.add(configurationFilter);
ScanSettings settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
if (!bluetoothAdapter.isEnabled()) { // <--- here bluethoothAdapter is null
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
getCurrentActivity().startActivityForResult(enableBtIntent, 8123);
}
// start scanning
scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(filters, settings, scanCallback);
}
解决方案
推荐阅读
- reactjs - 如何以编程方式更新 Redux 表单中的字段值?
- batch-file - 使用 asp classic 调用 bat 文件
- r - 连接多个列之间有多个缺失值
- python - 熊猫在数据框中的两列中寻找交叉销售
- html - 如何将图像放在其他盒子上?
- python - 如何在下面定义我的 python 作业的“cars_df”部分?
- excel - 我可以在两个不连续的范围内使用 MINIFS 或 INDEX/MATCH ...吗?
- mongodb - 在 phoenix/elixir 中使用 mongodb 驱动程序嵌套游标
- http - 如何在 Go 中请求具有特定字符集的页面?
- r - 在R中如何将字符串转换为数据框中的数字