Nowadays, most of Zebra printers are equipped with Bluetooth (BT), Bluetooth Low Energy (BLE) or both (BT + BLE). There is a Bluetooth User Guide for Zebra printers, which covers how the Bluetooth technologies (both BT & BLE) are used in Zebra printer production lines, the security mode, pairing and configuration, etc. To take the advantages of the Bluetooth on the printers, the Link-OS SDK for Android provides a number of API, ranging from Printer Discovery through Bluetooth, to Bluetooth Discovery, to Bluetooth Connection, to Multichannel Bluetooth Connection, etc. The Link-OS SDK for Android BTLE offers the equivalent API for using Bluetooth Low Energy (BLE), of which the equivalent API documentation can be found here.
In this article, we will not talk about how to use these Bluetooth API, which is the topic already well covered in their SDK API documentation and the demo projects included in their respective SDK packages. Instead, we will address the Android permissions associated with Bluetooth in this article.
Permissions Declared in the Application Manifest File
As well documented in Android Developer Guide, to use Bluetooth features (BT or BLE) in your application, you must declare two permissions in your application manifest file. They are
BLUETOOTH and ACCESS_FINE_LOCATION
(If your app targets Android 9 (API level 28) or lower, you can declare the
ACCESS_COARSE_LOCATION permission instead of the
). In addition, If you want your app to initiate device discovery or manipulate Bluetooth settings, you must declare the
BLUETOOTH_ADMIN permission as well.
Therefore, to use the Bluetooth API in Link-OS SDK for Android or for Android BTLE, you must have the following permissions in your application manifest file.
<manifest ... > <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- If your app targets Android 9 or lower, you can declare ACCESS_COARSE_LOCATION instead. --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ... </manifest>
Request App Permissions Explicitly (for Android 6.0 and higher)
Starting from Android 6.0 (API level 23), the app must request the user to approve the "dangerous" permissions declared in the manifest file at runtime. Both
BLUETOOTH_ADMIN are normal permissions, which do not need the user approval at runtime. However, both
ACCESS_COARSE_LOCATION are "dangerous" permissions that require the approval explicitly from the user at runtime.
There are two ways to approve the "dangerous" permissions. One way is to grant the permission through the app’s Settings. The other way is to request the permissions from the app.
Grant the Permission(s) through the App Settings
A user can use the app’s settings to grant the permission(s). The steps are:
- Go to the phone’s Settings and click on the Apps option,
- Select the specific app the user wants to give the permission(s) for,
- Choose the Permissions option under that app,
- Grant the permission(s)
Request for Permission(s) from the App
The Request App Permissions section in Android Developer Guide has sample code to guide you on how to let the system to manage the permission request or let you manage the permission yourself. We will let you explore the sample code in the Request App Permissions section. We will not repeat the sample code again here in this article.
As always, your questions and comments are welcome. Happy coding!