From cb51858dbffc1040a7b26caa4d83d0d2a2d2924e Mon Sep 17 00:00:00 2001 From: Dominik Czupryna Date: Tue, 3 Oct 2023 14:26:11 +0200 Subject: [PATCH] chore: update android pemissions docs --- CHANGELOG.md | 6 ++++++ INTRO.md | 14 ++++++++++++++ README.md | 19 ++++++++++++++++++- android/build.gradle | 2 +- .../android/app/src/main/AndroidManifest.xml | 5 ++--- example/src/services/BLEService/BLEService.ts | 6 ++---- 6 files changed, 43 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5792d500..c8cd8c7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +## [3.0.1] - 2023-10-03 + +### Changed + +- Android permissions section in docs and readme + ## [3.0.0] - 2023-09-28 ### Added diff --git a/INTRO.md b/INTRO.md index 5b1c71cc..1bf80a1c 100644 --- a/INTRO.md +++ b/INTRO.md @@ -68,6 +68,20 @@ requestBluetoothPermission = async () => { } ``` +With `neverForLocation` flag active, you can remove `ACCESS_FINE_LOCATION` permissions ask e.g.: + +```js +const result = await PermissionsAndroid.requestMultiple([ + PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN, + PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT +]) + +return ( + result['android.permission.BLUETOOTH_CONNECT'] === PermissionsAndroid.RESULTS.GRANTED && + result['android.permission.BLUETOOTH_SCAN'] === PermissionsAndroid.RESULTS.GRANTED +) +``` + ## Waiting for Powered On state When iOS application launches BLE stack is not immediately available and we need to check its status. diff --git a/README.md b/README.md index e0dc4652..1eb2e11d 100644 --- a/README.md +++ b/README.md @@ -120,7 +120,7 @@ Contact us at [intent](https://withintent.com/contact-us/?utm_source=github&utm_ } ``` -1. (Optional) In `AndroidManifest.xml`, add Bluetooth permissions and update ``: +1. In `AndroidManifest.xml`, add Bluetooth permissions and update ``: ```xml @@ -144,4 +144,21 @@ Contact us at [intent](https://withintent.com/contact-us/?utm_source=github&utm_ ... ``` +1. (Optional) In SDK 31+ You can remove `ACCESS_FINE_LOCATION` (or mark it as `android:maxSdkVersion="30"` ) from `AndroidManifest.xml` and add `neverForLocation` flag into `BLUETOOTH_SCAN` permissions which says that you will not use location based on scanning eg: + + ```xml + + + + + + + + + + ... + ``` + + With `neverForLocation` flag active, you no longer need to ask for `ACCESS_FINE_LOCATION` in your app + ## Troubleshooting diff --git a/android/build.gradle b/android/build.gradle index b17854f2..c0b30534 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -90,7 +90,7 @@ dependencies { // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin //noinspection GradleDynamicVersion implementation "com.facebook.react:react-native:+" - implementation 'com.github.dotintent:MultiPlatformBleAdapter:0.2.0' + implementation 'com.github.dotintent:MultiPlatformBleAdapter:a136c3f4ac' } if (isNewArchitectureEnabled()) { diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index b029d1b0..0e144786 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -2,13 +2,12 @@ - + - - + diff --git a/example/src/services/BLEService/BLEService.ts b/example/src/services/BLEService/BLEService.ts index 2a22102b..6775c705 100644 --- a/example/src/services/BLEService/BLEService.ts +++ b/example/src/services/BLEService/BLEService.ts @@ -393,14 +393,12 @@ class BLEServiceInstance { if (PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN && PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT) { const result = await PermissionsAndroid.requestMultiple([ PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN, - PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT, - PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION + PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT ]) return ( result['android.permission.BLUETOOTH_CONNECT'] === PermissionsAndroid.RESULTS.GRANTED && - result['android.permission.BLUETOOTH_SCAN'] === PermissionsAndroid.RESULTS.GRANTED && - result['android.permission.ACCESS_FINE_LOCATION'] === PermissionsAndroid.RESULTS.GRANTED + result['android.permission.BLUETOOTH_SCAN'] === PermissionsAndroid.RESULTS.GRANTED ) } }