From 351ce943a2cb54cef7252c06bcf673058363951b Mon Sep 17 00:00:00 2001 From: weiwentan23 Date: Thu, 27 Jan 2022 15:37:15 +0800 Subject: [PATCH 1/4] fix android demo app not working if granted permissions --- .../MainActivity.cs | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs b/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs index b7c48414..4b09c3ca 100644 --- a/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs +++ b/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs @@ -35,10 +35,30 @@ protected override void OnCreate(Bundle savedInstanceState) ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(savedInstanceState); - CheckPermissions(); + bool minimumPermissionsGranted = CheckPermissions(); + + if (!minimumPermissionsGranted) + { + RequestPermissions(Permissions, 0); + } Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); + + if (minimumPermissionsGranted) + { + LoadApplication(new App()); + + bluetoothAdapter = BluetoothAdapter.DefaultAdapter; + BroadcastReceiverPairingRequest = new BroadcastReceiverPairingRequest(); + BroadcastReceiverBondStateChanged = new BroadcastReceiverBondStateChanged(); + + IntentFilter filterPairingRequest = new IntentFilter(BluetoothDevice.ActionPairingRequest); + filterPairingRequest.Priority = (int)Android.Content.IntentFilterPriority.HighPriority; + RegisterReceiver(BroadcastReceiverPairingRequest, filterPairingRequest); + IntentFilter filterBondStateChanged = new IntentFilter(BluetoothDevice.ActionBondStateChanged); + RegisterReceiver(BroadcastReceiverBondStateChanged, filterBondStateChanged); + } } protected override void OnDestroy() { @@ -60,22 +80,16 @@ protected override void OnDestroy() } base.OnDestroy(); } - private void CheckPermissions() + private bool CheckPermissions() { - bool minimumPermissionsGranted = true; - foreach (string permission in Permissions) { if (CheckSelfPermission(permission) != Permission.Granted) { - minimumPermissionsGranted = false; + return false; } } - - if (!minimumPermissionsGranted) - { - RequestPermissions(Permissions, 0); - } + return true; } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { From 99c982f0c2c8edcc14ee2c5464bb3ded74f61291 Mon Sep 17 00:00:00 2001 From: weiwentan23 Date: Thu, 27 Jan 2022 16:32:19 +0800 Subject: [PATCH 2/4] simplify code --- .../MainActivity.cs | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs b/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs index 4b09c3ca..a1937eab 100644 --- a/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs +++ b/ShimmerBLE/VerisenseBLEDemoApp/VerisenseBLEDemoApp.Android/MainActivity.cs @@ -47,18 +47,23 @@ protected override void OnCreate(Bundle savedInstanceState) if (minimumPermissionsGranted) { - LoadApplication(new App()); + LoadAppAndRegisterReceiver(); + } + } - bluetoothAdapter = BluetoothAdapter.DefaultAdapter; - BroadcastReceiverPairingRequest = new BroadcastReceiverPairingRequest(); - BroadcastReceiverBondStateChanged = new BroadcastReceiverBondStateChanged(); + private void LoadAppAndRegisterReceiver() + { + LoadApplication(new App()); - IntentFilter filterPairingRequest = new IntentFilter(BluetoothDevice.ActionPairingRequest); - filterPairingRequest.Priority = (int)Android.Content.IntentFilterPriority.HighPriority; - RegisterReceiver(BroadcastReceiverPairingRequest, filterPairingRequest); - IntentFilter filterBondStateChanged = new IntentFilter(BluetoothDevice.ActionBondStateChanged); - RegisterReceiver(BroadcastReceiverBondStateChanged, filterBondStateChanged); - } + bluetoothAdapter = BluetoothAdapter.DefaultAdapter; + BroadcastReceiverPairingRequest = new BroadcastReceiverPairingRequest(); + BroadcastReceiverBondStateChanged = new BroadcastReceiverBondStateChanged(); + + IntentFilter filterPairingRequest = new IntentFilter(BluetoothDevice.ActionPairingRequest); + filterPairingRequest.Priority = (int)Android.Content.IntentFilterPriority.HighPriority; + RegisterReceiver(BroadcastReceiverPairingRequest, filterPairingRequest); + IntentFilter filterBondStateChanged = new IntentFilter(BluetoothDevice.ActionBondStateChanged); + RegisterReceiver(BroadcastReceiverBondStateChanged, filterBondStateChanged); } protected override void OnDestroy() { @@ -97,17 +102,7 @@ public override void OnRequestPermissionsResult(int requestCode, string[] permis base.OnRequestPermissionsResult(requestCode, permissions, grantResults); - LoadApplication(new App()); - - bluetoothAdapter = BluetoothAdapter.DefaultAdapter; - BroadcastReceiverPairingRequest = new BroadcastReceiverPairingRequest(); - BroadcastReceiverBondStateChanged = new BroadcastReceiverBondStateChanged(); - - IntentFilter filterPairingRequest = new IntentFilter(BluetoothDevice.ActionPairingRequest); - filterPairingRequest.Priority = (int)Android.Content.IntentFilterPriority.HighPriority; - RegisterReceiver(BroadcastReceiverPairingRequest, filterPairingRequest); - IntentFilter filterBondStateChanged = new IntentFilter(BluetoothDevice.ActionBondStateChanged); - RegisterReceiver(BroadcastReceiverBondStateChanged, filterBondStateChanged); + LoadAppAndRegisterReceiver(); } } } \ No newline at end of file From c39dda8269b0d220989af028a9d8f8e880369ae5 Mon Sep 17 00:00:00 2001 From: weiwentan23 Date: Fri, 28 Jan 2022 11:32:16 +0800 Subject: [PATCH 3/4] add location permission --- .../MultiVerisenseExample.Android/MainActivity.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/MainActivity.cs b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/MainActivity.cs index 4dd0c938..7b478911 100644 --- a/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/MainActivity.cs +++ b/ShimmerBLE/MultiVerisenseExample/MultiVerisenseExample.Android/MainActivity.cs @@ -32,7 +32,9 @@ protected override void OnCreate(Bundle savedInstanceState) Manifest.Permission.Bluetooth, Manifest.Permission.BluetoothAdmin, Manifest.Permission.ReadExternalStorage, - Manifest.Permission.WriteExternalStorage + Manifest.Permission.WriteExternalStorage, + Manifest.Permission.AccessCoarseLocation, + Manifest.Permission.AccessFineLocation, }; private void CheckPermissions() From b5d2c1602dfd017acc2288dd95e391cc2c29c18c Mon Sep 17 00:00:00 2001 From: weiwentan23 Date: Fri, 28 Jan 2022 11:59:44 +0800 Subject: [PATCH 4/4] add location permission --- .../PasskeyConfigurationApp.Android/MainActivity.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ShimmerBLE/PasskeyConfigurationApp/PasskeyConfigurationApp.Android/MainActivity.cs b/ShimmerBLE/PasskeyConfigurationApp/PasskeyConfigurationApp.Android/MainActivity.cs index aa039cee..b609fcdc 100644 --- a/ShimmerBLE/PasskeyConfigurationApp/PasskeyConfigurationApp.Android/MainActivity.cs +++ b/ShimmerBLE/PasskeyConfigurationApp/PasskeyConfigurationApp.Android/MainActivity.cs @@ -32,7 +32,9 @@ protected override void OnCreate(Bundle savedInstanceState) Manifest.Permission.Bluetooth, Manifest.Permission.BluetoothAdmin, Manifest.Permission.ReadExternalStorage, - Manifest.Permission.WriteExternalStorage + Manifest.Permission.WriteExternalStorage, + Manifest.Permission.AccessCoarseLocation, + Manifest.Permission.AccessFineLocation, }; private void CheckPermissions()