当前位置: 首页 > 知识库问答 >
问题:

运行新的蓝牙低能耗样本导致运行时异常

彭风华
2023-03-14

我已经在 Android 4.3 低功耗蓝牙示例中实现了代码来查找设备。

             final BluetoothManager bluetoothManager =
             (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
        BluetoothAdapter mBluetoothAdapter = bluetoothManager.getAdapter();
        mBluetoothAdapter.startLeScan(mLeScanCallback);

我的舱单包括:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

并且该设备是Nexus 4,已使用出厂4.3映像进行切换。

我曾经让这个东西工作过一次,但在后续运行中,我得到以下错误:

07-25 19:35:09.216 3308-3308/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.voltagex.adamtestapp/org.voltagex.adamtestapp.BluetoothTestActivity}: java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10148 nor current process has android.permission.BLUETOOTH.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: Need BLUETOOTH permission: Neither user 10148 nor current process has android.permission.BLUETOOTH.
at android.os.Parcel.readException(Parcel.java:1431)
at android.os.Parcel.readException(Parcel.java:1385)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.registerClient(IBluetoothGatt.java:708)
at android.bluetooth.BluetoothAdapter.startLeScan(BluetoothAdapter.java:1487)
at android.bluetooth.BluetoothAdapter.startLeScan(BluetoothAdapter.java:1448)
at org.voltagex.adamtestapp.BluetoothTestActivity.onCreate(BluetoothTestActivity.java:103)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
... 11 more
07-25 20:13:17.567 1219-25094/? E/BtGatt.GattService: getService() - Service requested, but not available!
07-25 20:13:29.210 1219-1219/? E/bt-btif: btif_enable_service: current services:0x100040
07-25 20:13:29.210 1219-1219/? E/bt-btif: btif_enable_service: current services:0x140040
07-25 20:13:29.220 1219-1219/? E/bt-btif: btif_enable_service: current services:0x140040
07-25 20:13:29.880 1219-5621/? E/bt-btm: BTM_SecRegister:p_cb_info->p_le_callback == 0x730d7629
07-25 20:13:29.880 1219-5621/? E/bt-btm: BTM_SecRegister: btm_cb.api.p_le_callback = 0x730d7629
07-25 20:13:29.891 1219-5593/? E/bt-btif: Calling BTA_HhEnable
07-25 20:13:29.891 1219-5593/? E/bt-btif: ## btif_config_get assert section && *section && key && *key && name && *name && bytes && type failed at line:182 ##
07-25 20:13:29.891 1219-5593/? E/bt-btif: ## btif_config_get assert section && *section && key && *key && name && *name && bytes && type failed at line:182 ##
07-25 20:13:29.891 1219-5593/? E/bt-btif: btif_storage_get_adapter_property service_mask:0x140040
07-25 20:13:29.891 1219-5593/? E/bt-btif: ## btif_config_get assert section && *section && key && *key && name && *name && bytes && type failed at line:182 ##
07-25 20:13:29.901 1219-5624/? E/bt_mct: hci lib postload completed
07-25 20:13:29.941 1219-5626/? E/BluetoothServiceJni: SOCK FLAG = 1 ***********************
07-25 20:13:29.981 1219-5631/? E/BluetoothServiceJni: SOCK FLAG = 0 ***********************
07-25 20:14:27.142 5765-5765/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at org.voltagex.adamtestapp.BluetoothTestActivity$2$1.run(BluetoothTestActivity.java:120)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

共有1个答案

诸葛彦
2023-03-14

尝试将使用功能标签添加到您的清单中。因此Android将知道并期望此功能可用:

<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
 类似资料:
  • 最近,我买了一台iBeacon设备,打算创建Android应用程序,以便识别和使用它。我是一个在Android应用程序中使用蓝牙的新手,有很多事情我还不知道。在互联网和本论坛中,我找到了使用Radius Networks的Android IBeacon库的建议,但是,唉,现在它不再可用了: https://github.com/RadiusNetworks/android-ibeacon-serv

  • jd.readBLECharacteristicValue(Object object) 读取低功耗蓝牙设备的特征值的二进制数据值。注意:必须设备的特征值支持 read 才可以成功调用。 参数名 类型 默认值 必填 说明 deviceId string 是 蓝牙设备 id serviceId string 是 蓝牙特征值对应服务的 uuid characteristicId string 是 蓝牙

  • 我得到一些信息,Android设备现在可以在蓝牙低能耗(BLE)外围模式下运行。应用程序可以使用此功能从Android L中的New向附近的设备广播它们的存在。 我已经全部配置好了(即蓝牙LE广告和广告数据的设置要在广告包中进行广告),当我开始发送时,我发现我无法监听传入的连接。谁能帮我? 我是一个基于l-开发者-预览-参考的API(Added Package:android.bluetooth.

  • 我目前正在开发一个应用程序,将使用蓝牙低能耗。 我正在使用以下链接, http://developer.android.com/samples/BluetoothLeGatt/src/com.example.android.bluetoothlegatt/DeviceScanActivity.html 我无法扫描周围的BLE设备。 要扫描设备,

  • 我目前正在编写一个应用程序,使用在2个或更多的手机之间传递小字符串的数据。 当前在前台,我正在传递:和。当应用程序位于前台时,我能够恢复(通过NSLog)通过CBAdvertisementDataLocalNameKey传递的字符串。 但是,当应用程序位于后台时,不会被传递。仍然与整数、和一起传递。 在梳理了一个似乎永无止境的叫做苹果文档的圈子后,我发现没有办法在应用程序处于后台时传递一个小字符串

  • 每当设备断开连接时,我确保对BluetoothGatt对象调用close()并将其设置为null。有什么见解吗? 编辑: 日志转储:对于这些日志,我将我的电话根目录化,并提高了/etc/bluetooth/bt_stack.conf中相关项的跟踪级别 成功连接-重新启动手机并安装应用程序后的第一次尝试。我能够连接,发现所有的服务/特性,并读/写。