Asking Runtime Permissions (ANDROID-Flutter)

Team
SDK Team
Last Updated
June 10, 2026

This guide helps asking runtime permissions in Flutter framework.

Some Android permissions must be asked depending on the Android version of the user. If the user has an Android version.

Permissions for Android 6.0 and above:

1 Future<void> _checkPermissionsLocation() async {
2 DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
3 final androidInfo = await deviceInfoPlugin.androidInfo;
4 var sdkInt = androidInfo.version.sdkInt;
5
6 if(sdkInt>=29) {
7 //Grouplink Requirements:
8 //Android needs only while in use location.
9 //Optional: show a rationale why the permission is used in your app.
10 var statuses = await Permission.location.request();
11
12 if (statuses.isDenied) {
13 //Optional: reiterates with a rationale why the permission is used and needed in your app.
14 statuses = await Permission.location.request();
15 }
16 }
17 }

For Android 12 there are new situational bluetooth permissions. All of the following are needed. Permissions for Android 12:

1 Future<void> _checkPermissionBluetooth() async {
2 DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
3 final androidInfo = await deviceInfoPlugin.androidInfo;
4 var sdkInt = androidInfo.version.sdkInt;
5
6 if(sdkInt>=31) {
7 //Optional: show a rationale why the permission is used in your app.
8 var statuses = await [
9 Permission.bluetoothScan,
10 Permission.bluetoothAdvertise,
11 Permission.bluetoothConnect
12 ].request();
13
14 if (statuses[Permission.bluetoothScan]!.isDenied) {
15 //Optional: reiterates with a rationale why the permission is used and needed in your app.
16 statuses = await [
17 Permission.bluetoothScan,
18 Permission.bluetoothAdvertise,
19 Permission.bluetoothConnect
20 ].request();
21 }
22 }
23 }