Donner les autorisations pour l'accès au Bluetooth BLE avec MAUI

Added by Alexandre Journaux 2 months ago

Avec MAUI, il y a 2 étapes pour donner les autorisations d'accès au Bluetooth

1. Renseigner AndroidManifest.xml

Le fichier AndroidManifest.xml se trouve dans Platforms/Android

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:allowBackup="true" android:supportsRtl="true" android:icon="@mipmap/ae"></application>
    <uses-sdk android:minSdkVersion="24" android:targetSdkVersion="34" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
</manifest>

2. Tester et donner les autorisations dans MainActivity

Le fichier MainActivité.cs se trouve dans Platforms/Android

public class MainActivity : MauiAppCompatActivity
{

    private static String[] PERMISSIONS_STORAGE = {
        Manifest.Permission.ReadExternalStorage,
        Manifest.Permission.WriteExternalStorage,
        Manifest.Permission.AccessFineLocation,
        Manifest.Permission.AccessCoarseLocation,
        Manifest.Permission.AccessLocationExtraCommands,
        Manifest.Permission.BluetoothScan,
        Manifest.Permission.BluetoothConnect,
        Manifest.Permission.BluetoothPrivileged
};

    private static String[] PERMISSIONS_BLUETOOTH = {
        Manifest.Permission.AccessFineLocation,
        Manifest.Permission.AccessCoarseLocation,
        Manifest.Permission.AccessLocationExtraCommands,
        Manifest.Permission.BluetoothScan,
        Manifest.Permission.BluetoothConnect,
        Manifest.Permission.BluetoothPrivileged
};

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        Permission permission1 = ActivityCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage);
        Permission permission2 = ActivityCompat.CheckSelfPermission(this, Manifest.Permission.BluetoothScan);
        if (permission1 != Permission.Granted)
        {
            // We don't have permission so prompt the user
            ActivityCompat.RequestPermissions(this, PERMISSIONS_STORAGE, 1);
        } else if (permission2 != Permission.Granted)
        {
            ActivityCompat.RequestPermissions(this, PERMISSIONS_BLUETOOTH, 1);
        }
    }
}

Solution trouvée sur : https://stackoverflow.com/questions/70245463/java-lang-securityexception-need-android-permission-bluetooth-connect-permissio