Commit 2395c10c by Yannick Maljaars Committed by GitHub

Added platform support for new android granular media and alarm permissions (#934)

* Added platform support for new android granular media and alarm permissions

* Hotfix typo

* Hotfix 2, line end ;

* Hotfix: alignment in PermissionUtils.java
parent f1efd8bd
## 10.2.0
* Added support for the new Android 13 permissions: SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO
## 10.1.0 ## 10.1.0
* Added support for the new Android 13 permission: NEARBY_WIFI_DEVICES. * Added support for the new Android 13 permission: NEARBY_WIFI_DEVICES.
......
...@@ -47,7 +47,9 @@ final class PermissionConstants { ...@@ -47,7 +47,9 @@ final class PermissionConstants {
static final int PERMISSION_GROUP_BLUETOOTH_ADVERTISE = 29; static final int PERMISSION_GROUP_BLUETOOTH_ADVERTISE = 29;
static final int PERMISSION_GROUP_BLUETOOTH_CONNECT = 30; static final int PERMISSION_GROUP_BLUETOOTH_CONNECT = 30;
static final int PERMISSION_GROUP_NEARBY_WIFI_DEVICES = 31; static final int PERMISSION_GROUP_NEARBY_WIFI_DEVICES = 31;
static final int PERMISSION_GROUP_VIDEOS = 32;
static final int PERMISSION_GROUP_AUDIO = 33;
static final int PERMISSION_GROUP_SCHEDULE_EXACT_ALARM = 34;
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@IntDef({ @IntDef({
...@@ -79,7 +81,10 @@ final class PermissionConstants { ...@@ -79,7 +81,10 @@ final class PermissionConstants {
PERMISSION_GROUP_BLUETOOTH_SCAN, PERMISSION_GROUP_BLUETOOTH_SCAN,
PERMISSION_GROUP_BLUETOOTH_ADVERTISE, PERMISSION_GROUP_BLUETOOTH_ADVERTISE,
PERMISSION_GROUP_BLUETOOTH_CONNECT, PERMISSION_GROUP_BLUETOOTH_CONNECT,
PERMISSION_GROUP_NEARBY_WIFI_DEVICES PERMISSION_GROUP_NEARBY_WIFI_DEVICES,
PERMISSION_GROUP_VIDEOS,
PERMISSION_GROUP_AUDIO,
PERMISSION_GROUP_SCHEDULE_EXACT_ALARM
}) })
@interface PermissionGroup { @interface PermissionGroup {
} }
......
...@@ -79,6 +79,14 @@ public class PermissionUtils { ...@@ -79,6 +79,14 @@ public class PermissionUtils {
return PermissionConstants.PERMISSION_GROUP_NOTIFICATION; return PermissionConstants.PERMISSION_GROUP_NOTIFICATION;
case Manifest.permission.NEARBY_WIFI_DEVICES: case Manifest.permission.NEARBY_WIFI_DEVICES:
return PermissionConstants.PERMISSION_GROUP_NEARBY_WIFI_DEVICES; return PermissionConstants.PERMISSION_GROUP_NEARBY_WIFI_DEVICES;
case Manifest.permission.READ_MEDIA_IMAGES:
return PermissionConstants.PERMISSION_GROUP_PHOTOS;
case Manifest.permission.READ_MEDIA_VIDEO:
return PermissionConstants.PERMISSION_GROUP_VIDEOS;
case Manifest.permission.READ_MEDIA_AUDIO:
return PermissionConstants.PERMISSION_GROUP_AUDIO;
case Manifest.permission.SCHEDULE_EXACT_ALARM:
return PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM;
default: default:
return PermissionConstants.PERMISSION_GROUP_UNKNOWN; return PermissionConstants.PERMISSION_GROUP_UNKNOWN;
} }
...@@ -292,19 +300,42 @@ public class PermissionUtils { ...@@ -292,19 +300,42 @@ public class PermissionUtils {
break; break;
} }
case PermissionConstants.PERMISSION_GROUP_NOTIFICATION: case PermissionConstants.PERMISSION_GROUP_NOTIFICATION:
// The POST_NOTIFICATIONS permission is introduced in Android 13, meaning we should // The POST_NOTIFICATIONS permission is introduced in Android T, meaning we should
// not handle permissions on pre Android 13 devices. // not handle permissions on pre Android T 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 13, meaning we should // The NEARBY_WIFI_DEVICES permission is introduced in Android T, meaning we should
// not handle permissions on pre Android 13 devices. // not handle permissions on pre Android T 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_MEDIA_LIBRARY:
case PermissionConstants.PERMISSION_GROUP_PHOTOS: case PermissionConstants.PERMISSION_GROUP_PHOTOS:
// The READ_MEDIA_IMAGES permission is introduced in Android T, meaning we should
// not handle permissions on pre Android T devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_IMAGES ))
permissionNames.add(Manifest.permission.READ_MEDIA_IMAGES);
break;
case PermissionConstants.PERMISSION_GROUP_VIDEOS:
// The READ_MEDIA_VIDEOS permission is introduced in Android T, meaning we should
// not handle permissions on pre Android T devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_VIDEO ))
permissionNames.add(Manifest.permission.READ_MEDIA_VIDEO);
break;
case PermissionConstants.PERMISSION_GROUP_AUDIO:
// The READ_MEDIA_AUDIO permission is introduced in Android T, meaning we should
// not handle permissions on pre Android T devices.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && hasPermissionInManifest(context, permissionNames, Manifest.permission.READ_MEDIA_AUDIO ))
permissionNames.add(Manifest.permission.READ_MEDIA_AUDIO);
break;
case PermissionConstants.PERMISSION_GROUP_SCHEDULE_EXACT_ALARM:
// The SCHEDULE_EXACT_ALARM permission is introduced in Android S, meaning we should
// 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 ))
permissionNames.add(Manifest.permission.SCHEDULE_EXACT_ALARM);
break;
case PermissionConstants.PERMISSION_GROUP_MEDIA_LIBRARY:
case PermissionConstants.PERMISSION_GROUP_REMINDERS: case PermissionConstants.PERMISSION_GROUP_REMINDERS:
case PermissionConstants.PERMISSION_GROUP_UNKNOWN: case PermissionConstants.PERMISSION_GROUP_UNKNOWN:
return null; return null;
......
...@@ -16,6 +16,9 @@ ...@@ -16,6 +16,9 @@
<!-- Permissions options for the `storage` group --> <!-- Permissions options for the `storage` group -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<!-- Permissions options for the `camera` group --> <!-- Permissions options for the `camera` group -->
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.CAMERA"/>
...@@ -79,6 +82,9 @@ ...@@ -79,6 +82,9 @@
<!-- 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"/>
<!-- Permissions options for the `alarm` group -->
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<application <application
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
......
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.
version: 10.1.0 version: 10.2.0
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
environment: environment:
......
## 9.0.7
* Added new Android 13 permissions "SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO" to PermissionHandlerEnums.h
## 9.0.6 ## 9.0.6
* Prevent appearing popup that asks to turn on Bluetooth on iOS * Prevent appearing popup that asks to turn on Bluetooth on iOS
......
...@@ -142,7 +142,10 @@ typedef NS_ENUM(int, PermissionGroup) { ...@@ -142,7 +142,10 @@ typedef NS_ENUM(int, PermissionGroup) {
PermissionGroupBluetoothScan, PermissionGroupBluetoothScan,
PermissionGroupBluetoothAdvertise, PermissionGroupBluetoothAdvertise,
PermissionGroupBluetoothConnect, PermissionGroupBluetoothConnect,
PermissionGroupNearbyWifiDevices PermissionGroupNearbyWifiDevices,
PermissiongroupVideos,
PermissionGroupAudio,
PermissionGroupScheduleExactAlarm
}; };
typedef NS_ENUM(int, PermissionStatus) { typedef NS_ENUM(int, PermissionStatus) {
......
name: permission_handler_apple 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.
version: 9.0.6 version: 9.0.7
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
environment: environment:
......
# 0.1.1 ## 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
## 0.1.1
* Added new Android 13 NEARBY_WIFI_DEVICES permission to permission_constants.h * Added new Android 13 NEARBY_WIFI_DEVICES permission to permission_constants.h
......
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.1 version: 0.1.2
homepage: https://github.com/baseflow/flutter-permission-handler homepage: https://github.com/baseflow/flutter-permission-handler
flutter: flutter:
......
...@@ -42,7 +42,10 @@ public: ...@@ -42,7 +42,10 @@ public:
BLUETOOTH_SCAN = 28, BLUETOOTH_SCAN = 28,
BLUETOOTH_ADVERTISE = 29, BLUETOOTH_ADVERTISE = 29,
BLUETOOTH_CONNECT = 30, BLUETOOTH_CONNECT = 30,
NEARBY_WIFI_DEVICES = 31 NEARBY_WIFI_DEVICES = 31,
VIDEOS = 32,
AUDIO = 33,
SCHEDULE_EXACT_ALARM = 34
}; };
//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