I have compiled the ble_app_hids_keyboard example for a nRF52832 on a Laird DVK-BL652 breakout board.
I have a tablet running android 5.1.1 and the nordic nRFConnect tool. I find that I can connect the nRFconnect app to the device and I can get notifications from the battery service.
I find that if I try to get notifications or read from the HID characteristics the connection closes and I get an error message saying: Need BLUETOOTH_PRIVILEGED permission.
As I understand it this is related to the devices automatically paring without user intervention, and you cannot set this permission inside your own Android app.
Does anyone know how to access the HID data without causing this error?
You are right, this is to prevent 3rd party apps from using this service. Only apps having BLUETOOTH_PRIVILEGED permission (that is those signed with Google's key, so Settings, Android system itself…
You are right, this is to prevent 3rd party apps from using this service. Only apps having BLUETOOTH_PRIVILEGED permission (that is those signed with Google's key, so Settings, Android system itself, etc.) can access characteristics and descriptors in this service. It is not possible to do any walk-around. If you need to add some additional features to your keyboard, you have to use a different, custom service, that only your app will be able to understand. You may have HID and other services on one device. System will use the HID service, your app others.
This permission is required since Android 5 onward. Before Lollipop, it was possible for any app to enable notifications on HID Report characteristic and listen to any keys (passwords!) typed in. Starting from 5 it is guaranteed that only the system will receive sensitive data typed by the user and it will send them to the correct app as keys, not as BLE events.
Please, read more here: devzone.nordicsemi.com/.../ in 4.6.
Thank you for clarifying this. I have now mostly done what I wanted to, and I shall now access the HID data through the operating system, not though the BLE APIs in my Android program.
i am also facing same issue so how we can check this for app and enable the notification to get the report
Have you read the answer by Aleksander ? It's not possible for 3rd party app to access HID service, only Android system can. You need to access data from HID device as it's normal keyboard.