Commit c5769c76 by Maurits van Beusekom Committed by GitHub

Adds BODY_SENSORS_BACKGROUND support (#1074)

parent 1ce7e229
## 10.3.0
* Adds support for the new Android 13 permission: BODY_SENSORS_BACKGROUND.
## 10.2.3 ## 10.2.3
* Fixes missing POST_NOTIFICATIONS permission in Android example project. * Fixes missing POST_NOTIFICATIONS permission in Android example project.
......
...@@ -50,6 +50,7 @@ final class PermissionConstants { ...@@ -50,6 +50,7 @@ final class PermissionConstants {
static final int PERMISSION_GROUP_VIDEOS = 32; static final int PERMISSION_GROUP_VIDEOS = 32;
static final int PERMISSION_GROUP_AUDIO = 33; static final int PERMISSION_GROUP_AUDIO = 33;
static final int PERMISSION_GROUP_SCHEDULE_EXACT_ALARM = 34; static final int PERMISSION_GROUP_SCHEDULE_EXACT_ALARM = 34;
static final int PERMISSION_GROUP_SENSORS_ALWAYS = 35;
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({ @IntDef({
...@@ -65,6 +66,7 @@ final class PermissionConstants { ...@@ -65,6 +66,7 @@ final class PermissionConstants {
PERMISSION_GROUP_PHOTOS, PERMISSION_GROUP_PHOTOS,
PERMISSION_GROUP_REMINDERS, PERMISSION_GROUP_REMINDERS,
PERMISSION_GROUP_SENSORS, PERMISSION_GROUP_SENSORS,
PERMISSION_GROUP_SENSORS_ALWAYS,
PERMISSION_GROUP_SMS, PERMISSION_GROUP_SMS,
PERMISSION_GROUP_SPEECH, PERMISSION_GROUP_SPEECH,
PERMISSION_GROUP_STORAGE, PERMISSION_GROUP_STORAGE,
......
...@@ -48,6 +48,8 @@ public class PermissionUtils { ...@@ -48,6 +48,8 @@ public class PermissionUtils {
return PermissionConstants.PERMISSION_GROUP_PHONE; return PermissionConstants.PERMISSION_GROUP_PHONE;
case Manifest.permission.BODY_SENSORS: case Manifest.permission.BODY_SENSORS:
return PermissionConstants.PERMISSION_GROUP_SENSORS; return PermissionConstants.PERMISSION_GROUP_SENSORS;
case Manifest.permission.BODY_SENSORS_BACKGROUND:
return PermissionConstants.PERMISSION_GROUP_SENSORS_ALWAYS;
case Manifest.permission.SEND_SMS: case Manifest.permission.SEND_SMS:
case Manifest.permission.RECEIVE_SMS: case Manifest.permission.RECEIVE_SMS:
case Manifest.permission.READ_SMS: case Manifest.permission.READ_SMS:
...@@ -183,6 +185,12 @@ public class PermissionUtils { ...@@ -183,6 +185,12 @@ public class PermissionUtils {
} }
} }
break; break;
case PermissionConstants.PERMISSION_GROUP_SENSORS_ALWAYS:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (hasPermissionInManifest(context, permissionNames, Manifest.permission.BODY_SENSORS_BACKGROUND)) {
permissionNames.add(Manifest.permission.BODY_SENSORS_BACKGROUND);
}
}
case PermissionConstants.PERMISSION_GROUP_SMS: case PermissionConstants.PERMISSION_GROUP_SMS:
if (hasPermissionInManifest(context, permissionNames, Manifest.permission.SEND_SMS)) if (hasPermissionInManifest(context, permissionNames, Manifest.permission.SEND_SMS))
...@@ -223,7 +231,7 @@ public class PermissionUtils { ...@@ -223,7 +231,7 @@ public class PermissionUtils {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q)
return null; return null;
if(hasPermissionInManifest(context, permissionNames, Manifest.permission.ACCESS_MEDIA_LOCATION)) if (hasPermissionInManifest(context, permissionNames, Manifest.permission.ACCESS_MEDIA_LOCATION))
permissionNames.add(Manifest.permission.ACCESS_MEDIA_LOCATION); permissionNames.add(Manifest.permission.ACCESS_MEDIA_LOCATION);
break; break;
...@@ -245,25 +253,25 @@ public class PermissionUtils { ...@@ -245,25 +253,25 @@ public class PermissionUtils {
case PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE: case PermissionConstants.PERMISSION_GROUP_MANAGE_EXTERNAL_STORAGE:
// The MANAGE_EXTERNAL_STORAGE permission is introduced in Android R, meaning we should // The MANAGE_EXTERNAL_STORAGE permission is introduced in Android R, meaning we should
// not handle permissions on pre Android R devices. // not handle permissions on pre Android R devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && hasPermissionInManifest(context, permissionNames, Manifest.permission.MANAGE_EXTERNAL_STORAGE )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && hasPermissionInManifest(context, permissionNames, Manifest.permission.MANAGE_EXTERNAL_STORAGE))
permissionNames.add(Manifest.permission.MANAGE_EXTERNAL_STORAGE); permissionNames.add(Manifest.permission.MANAGE_EXTERNAL_STORAGE);
break; break;
case PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW: case PermissionConstants.PERMISSION_GROUP_SYSTEM_ALERT_WINDOW:
if (hasPermissionInManifest(context, permissionNames, Manifest.permission.SYSTEM_ALERT_WINDOW )) if (hasPermissionInManifest(context, permissionNames, Manifest.permission.SYSTEM_ALERT_WINDOW))
permissionNames.add(Manifest.permission.SYSTEM_ALERT_WINDOW); permissionNames.add(Manifest.permission.SYSTEM_ALERT_WINDOW);
break; break;
case PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES: case PermissionConstants.PERMISSION_GROUP_REQUEST_INSTALL_PACKAGES:
// The REQUEST_INSTALL_PACKAGES permission is introduced in Android M, meaning we should // The REQUEST_INSTALL_PACKAGES permission is introduced in Android M, meaning we should
// not handle permissions on pre Android M devices. // not handle permissions on pre Android M devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, permissionNames, Manifest.permission.REQUEST_INSTALL_PACKAGES )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, permissionNames, Manifest.permission.REQUEST_INSTALL_PACKAGES))
permissionNames.add(Manifest.permission.REQUEST_INSTALL_PACKAGES); permissionNames.add(Manifest.permission.REQUEST_INSTALL_PACKAGES);
break; break;
case PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY: case PermissionConstants.PERMISSION_GROUP_ACCESS_NOTIFICATION_POLICY:
// The REQUEST_NOTIFICATION_POLICY permission is introduced in Android M, meaning we should // The REQUEST_NOTIFICATION_POLICY permission is introduced in Android M, meaning we should
// not handle permissions on pre Android M devices. // not handle permissions on pre Android M devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, permissionNames, Manifest.permission.ACCESS_NOTIFICATION_POLICY )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && hasPermissionInManifest(context, permissionNames, Manifest.permission.ACCESS_NOTIFICATION_POLICY))
permissionNames.add(Manifest.permission.ACCESS_NOTIFICATION_POLICY); permissionNames.add(Manifest.permission.ACCESS_NOTIFICATION_POLICY);
break; break;
case PermissionConstants.PERMISSION_GROUP_BLUETOOTH_SCAN: { case PermissionConstants.PERMISSION_GROUP_BLUETOOTH_SCAN: {
...@@ -300,39 +308,39 @@ public class PermissionUtils { ...@@ -300,39 +308,39 @@ public class PermissionUtils {
break; break;
} }
case PermissionConstants.PERMISSION_GROUP_NOTIFICATION: case PermissionConstants.PERMISSION_GROUP_NOTIFICATION:
// The POST_NOTIFICATIONS permission is introduced in Android T, meaning we should // The POST_NOTIFICATIONS permission is introduced in Android TIRAMISU, meaning we should
// not handle permissions on pre Android T devices. // not handle permissions on pre Android TIRAMISU devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.POST_NOTIFICATIONS )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.POST_NOTIFICATIONS))
permissionNames.add(Manifest.permission.POST_NOTIFICATIONS); permissionNames.add(Manifest.permission.POST_NOTIFICATIONS);
break; break;
case PermissionConstants.PERMISSION_GROUP_NEARBY_WIFI_DEVICES: case PermissionConstants.PERMISSION_GROUP_NEARBY_WIFI_DEVICES:
// The NEARBY_WIFI_DEVICES permission is introduced in Android T, meaning we should // The NEARBY_WIFI_DEVICES permission is introduced in Android TIRAMISU, meaning we should
// not handle permissions on pre Android T devices. // not handle permissions on pre Android TIRAMISU devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.NEARBY_WIFI_DEVICES )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.NEARBY_WIFI_DEVICES))
permissionNames.add(Manifest.permission.NEARBY_WIFI_DEVICES); permissionNames.add(Manifest.permission.NEARBY_WIFI_DEVICES);
break; break;
case PermissionConstants.PERMISSION_GROUP_PHOTOS: case PermissionConstants.PERMISSION_GROUP_PHOTOS:
// The READ_MEDIA_IMAGES permission is introduced in Android T, meaning we should // The READ_MEDIA_IMAGES permission is introduced in Android TIRAMISU, meaning we should
// not handle permissions on pre Android T devices. // not handle permissions on pre Android TIRAMISU devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_IMAGES )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_IMAGES))
permissionNames.add(Manifest.permission.READ_MEDIA_IMAGES); permissionNames.add(Manifest.permission.READ_MEDIA_IMAGES);
break; break;
case PermissionConstants.PERMISSION_GROUP_VIDEOS: case PermissionConstants.PERMISSION_GROUP_VIDEOS:
// The READ_MEDIA_VIDEOS permission is introduced in Android T, meaning we should // The READ_MEDIA_VIDEOS permission is introduced in Android TIRAMISU, meaning we should
// not handle permissions on pre Android T devices. // not handle permissions on pre Android TIRAMISU devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_VIDEO )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_VIDEO))
permissionNames.add(Manifest.permission.READ_MEDIA_VIDEO); permissionNames.add(Manifest.permission.READ_MEDIA_VIDEO);
break; break;
case PermissionConstants.PERMISSION_GROUP_AUDIO: case PermissionConstants.PERMISSION_GROUP_AUDIO:
// The READ_MEDIA_AUDIO permission is introduced in Android T, meaning we should // The READ_MEDIA_AUDIO permission is introduced in Android TIRAMISU, meaning we should
// not handle permissions on pre Android T devices. // not handle permissions on pre Android TIRAMISU devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_AUDIO )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_AUDIO))
permissionNames.add(Manifest.permission.READ_MEDIA_AUDIO); permissionNames.add(Manifest.permission.READ_MEDIA_AUDIO);
break; break;
case PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM: case PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM:
// The SCHEDULE_EXACT_ALARM permission is introduced in Android S, meaning we should // The SCHEDULE_EXACT_ALARM permission is introduced in Android S, meaning we should
// not handle permissions on pre Android S devices. // not handle permissions on pre Android S devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasPermissionInManifest(context, permissionNames, Manifest.permission.SCHEDULE_EXACT_ALARM )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasPermissionInManifest(context, permissionNames, Manifest.permission.SCHEDULE_EXACT_ALARM))
permissionNames.add(Manifest.permission.SCHEDULE_EXACT_ALARM); permissionNames.add(Manifest.permission.SCHEDULE_EXACT_ALARM);
break; break;
case PermissionConstants.PERMISSION_GROUP_MEDIA_LIBRARY: case PermissionConstants.PERMISSION_GROUP_MEDIA_LIBRARY:
...@@ -412,16 +420,16 @@ public class PermissionUtils { ...@@ -412,16 +420,16 @@ public class PermissionUtils {
} }
private static String determineBluetoothPermission(Context context, String permission) { private static String determineBluetoothPermission(Context context, String permission) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasPermissionInManifest(context, null, permission )) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && hasPermissionInManifest(context, null, permission)) {
return permission; return permission;
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) { } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
if(hasPermissionInManifest(context, null, Manifest.permission.ACCESS_FINE_LOCATION)){ if (hasPermissionInManifest(context, null, Manifest.permission.ACCESS_FINE_LOCATION)) {
return Manifest.permission.ACCESS_FINE_LOCATION; return Manifest.permission.ACCESS_FINE_LOCATION;
} else if (hasPermissionInManifest(context, null, Manifest.permission.ACCESS_COARSE_LOCATION)){ } else if (hasPermissionInManifest(context, null, Manifest.permission.ACCESS_COARSE_LOCATION)) {
return Manifest.permission.ACCESS_COARSE_LOCATION; return Manifest.permission.ACCESS_COARSE_LOCATION;
} }
return null; return null;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && hasPermissionInManifest(context, null, Manifest.permission.ACCESS_FINE_LOCATION)) { } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && hasPermissionInManifest(context, null, Manifest.permission.ACCESS_FINE_LOCATION)) {
return Manifest.permission.ACCESS_FINE_LOCATION; return Manifest.permission.ACCESS_FINE_LOCATION;
} }
......
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
<!-- Permissions options for the `sensors` group --> <!-- Permissions options for the `sensors` group -->
<uses-permission android:name="android.permission.BODY_SENSORS" /> <uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" />
<!-- Permissions options for the `accessMediaLocation` group --> <!-- Permissions options for the `accessMediaLocation` group -->
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
<!-- Permissions options for the `sensors` group --> <!-- Permissions options for the `sensors` group -->
<uses-permission android:name="android.permission.BODY_SENSORS" /> <uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" />
<!-- Permissions options for the `access notification policy` group --> <!-- Permissions options for the `access notification policy` group -->
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>
......
name: permission_handler_android name: permission_handler_android
description: Permission plugin for Flutter. This plugin provides the Android API to request and check permissions. description: Permission plugin for Flutter. This plugin provides the Android API to request and check permissions.
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
version: 10.2.3 version: 10.3.0
environment: environment:
sdk: ">=2.15.0 <4.0.0" sdk: ">=2.15.0 <4.0.0"
...@@ -18,7 +18,7 @@ flutter: ...@@ -18,7 +18,7 @@ flutter:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
permission_handler_platform_interface: ^3.7.0 permission_handler_platform_interface: ^3.11.0
dev_dependencies: dev_dependencies:
flutter_lints: ^1.0.4 flutter_lints: ^1.0.4
......
## 9.1.1
* Adds the new Android 13 permission "BODY_SENSORS_BACKGROUND" to PermissionHandlerEnums.h.
## 9.1.0 ## 9.1.0
* Adds the "Provisional" permission status which is introduced in iOS 12+. * Adds the "Provisional" permission status which is introduced in iOS 12+.
......
...@@ -145,7 +145,8 @@ typedef NS_ENUM(int, PermissionGroup) { ...@@ -145,7 +145,8 @@ typedef NS_ENUM(int, PermissionGroup) {
PermissionGroupNearbyWifiDevices, PermissionGroupNearbyWifiDevices,
PermissiongroupVideos, PermissiongroupVideos,
PermissionGroupAudio, PermissionGroupAudio,
PermissionGroupScheduleExactAlarm PermissionGroupScheduleExactAlarm,
PermissionGroupSensorsAlways
}; };
typedef NS_ENUM(int, PermissionStatus) { typedef NS_ENUM(int, PermissionStatus) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'permission_handler_apple' s.name = 'permission_handler_apple'
s.version = '9.1.0' s.version = '9.1.1'
s.summary = 'Permission plugin for Flutter.' s.summary = 'Permission plugin for Flutter.'
s.description = <<-DESC s.description = <<-DESC
Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions. Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.
......
...@@ -2,7 +2,7 @@ name: permission_handler_apple ...@@ -2,7 +2,7 @@ name: permission_handler_apple
description: Permission plugin for Flutter. This plugin provides the iOS API to request and check permissions. description: Permission plugin for Flutter. This plugin provides the iOS API to request and check permissions.
repository: https://github.com/baseflow/flutter-permission-handler repository: https://github.com/baseflow/flutter-permission-handler
issue_tracker: https://github.com/Baseflow/flutter-permission-handler/issues issue_tracker: https://github.com/Baseflow/flutter-permission-handler/issues
version: 9.1.0 version: 9.1.1
environment: environment:
sdk: ">=2.15.0 <4.0.0" sdk: ">=2.15.0 <4.0.0"
...@@ -18,7 +18,7 @@ flutter: ...@@ -18,7 +18,7 @@ flutter:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
permission_handler_platform_interface: ^3.10.0 permission_handler_platform_interface: ^3.11.0
dev_dependencies: dev_dependencies:
flutter_lints: ^1.0.4 flutter_lints: ^1.0.4
......
## 0.1.3
* Adds the new Android 13 permission "BODY_SENSORS_BACKGROUND" to PermissionHandlerEnums.h.
## 0.1.2 ## 0.1.2
* Added new Android 13 permissions "SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO" to permission_constants.h * Adds the new Android 13 permissions "SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO" to permission_constants.h.
## 0.1.1 ## 0.1.1
* Added new Android 13 NEARBY_WIFI_DEVICES permission to permission_constants.h * Adds the new Android 13 NEARBY_WIFI_DEVICES permission to permission_constants.h.
## 0.1.0 ## 0.1.0
......
name: permission_handler_windows name: permission_handler_windows
description: Permission plugin for Flutter. This plugin provides the Windows API to request and check permissions. description: Permission plugin for Flutter. This plugin provides the Windows API to request and check permissions.
version: 0.1.2 version: 0.1.3
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
flutter: flutter:
...@@ -13,7 +13,7 @@ flutter: ...@@ -13,7 +13,7 @@ flutter:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
permission_handler_platform_interface: ^3.7.0 permission_handler_platform_interface: ^3.11.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
...@@ -45,7 +45,8 @@ public: ...@@ -45,7 +45,8 @@ public:
NEARBY_WIFI_DEVICES = 31, NEARBY_WIFI_DEVICES = 31,
VIDEOS = 32, VIDEOS = 32,
AUDIO = 33, AUDIO = 33,
SCHEDULE_EXACT_ALARM = 34 SCHEDULE_EXACT_ALARM = 34,
SENSORS_ALWAYS = 35
}; };
//PERMISSION_STATUS //PERMISSION_STATUS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment