Commit a9d40fd6 by Maurits van Beusekom Committed by GitHub

Merge pull request #185 from claudioredi/feature/access_media_location_permission

Added ACCESS_MEDIA_LOCATION permission handling for Android >= 10
parents 9baa3206 cd5ecac6
...@@ -62,7 +62,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler { ...@@ -62,7 +62,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
private static final int PERMISSION_GROUP_STORAGE = 14; private static final int PERMISSION_GROUP_STORAGE = 14;
private static final int PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS = 15; private static final int PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS = 15;
private static final int PERMISSION_GROUP_NOTIFICATION = 16; private static final int PERMISSION_GROUP_NOTIFICATION = 16;
private static final int PERMISSION_GROUP_UNKNOWN = 17; private static final int PERMISSION_GROUP_ACCESS_MEDIA_LOCATION = 17;
private static final int PERMISSION_GROUP_UNKNOWN = 18;
private PermissionHandlerPlugin(Registrar mRegistrar) { private PermissionHandlerPlugin(Registrar mRegistrar) {
this.mRegistrar = mRegistrar; this.mRegistrar = mRegistrar;
...@@ -87,6 +88,7 @@ public class PermissionHandlerPlugin implements MethodCallHandler { ...@@ -87,6 +88,7 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
PERMISSION_GROUP_STORAGE, PERMISSION_GROUP_STORAGE,
PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS, PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS,
PERMISSION_GROUP_NOTIFICATION, PERMISSION_GROUP_NOTIFICATION,
PERMISSION_GROUP_ACCESS_MEDIA_LOCATION,
PERMISSION_GROUP_UNKNOWN, PERMISSION_GROUP_UNKNOWN,
}) })
private @interface PermissionGroup { private @interface PermissionGroup {
...@@ -195,6 +197,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler { ...@@ -195,6 +197,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
case Manifest.permission.READ_EXTERNAL_STORAGE: case Manifest.permission.READ_EXTERNAL_STORAGE:
case Manifest.permission.WRITE_EXTERNAL_STORAGE: case Manifest.permission.WRITE_EXTERNAL_STORAGE:
return PERMISSION_GROUP_STORAGE; return PERMISSION_GROUP_STORAGE;
case Manifest.permission.ACCESS_MEDIA_LOCATION:
return PERMISSION_GROUP_ACCESS_MEDIA_LOCATION;
default: default:
return PERMISSION_GROUP_UNKNOWN; return PERMISSION_GROUP_UNKNOWN;
} }
...@@ -666,6 +670,11 @@ public class PermissionHandlerPlugin implements MethodCallHandler { ...@@ -666,6 +670,11 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
permissionNames.add(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); permissionNames.add(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
break; break;
case PERMISSION_GROUP_ACCESS_MEDIA_LOCATION:
if (VERSION.SDK_INT >= VERSION_CODES.Q && hasPermissionInManifest(Manifest.permission.ACCESS_MEDIA_LOCATION))
permissionNames.add(Manifest.permission.ACCESS_MEDIA_LOCATION);
break;
case PERMISSION_GROUP_NOTIFICATION: case PERMISSION_GROUP_NOTIFICATION:
case PERMISSION_GROUP_MEDIA_LIBRARY: case PERMISSION_GROUP_MEDIA_LIBRARY:
case PERMISSION_GROUP_PHOTOS: case PERMISSION_GROUP_PHOTOS:
......
...@@ -46,4 +46,8 @@ ...@@ -46,4 +46,8 @@
<!-- 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" />
<!-- Permissions options for the `access_media_location` group -->
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
</manifest> </manifest>
...@@ -51,6 +51,9 @@ ...@@ -51,6 +51,9 @@
<!-- 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" />
<!-- Permissions options for the `access_media_location` group -->
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<application <application
android:name="io.flutter.app.FlutterApplication" android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
......
...@@ -30,8 +30,8 @@ class MyApp extends StatelessWidget { ...@@ -30,8 +30,8 @@ class MyApp extends StatelessWidget {
return permission != PermissionGroup.unknown && return permission != PermissionGroup.unknown &&
permission != PermissionGroup.sms && permission != PermissionGroup.sms &&
permission != PermissionGroup.storage && permission != PermissionGroup.storage &&
permission != permission != PermissionGroup.ignoreBatteryOptimizations &&
PermissionGroup.ignoreBatteryOptimizations; permission != PermissionGroup.access_media_location;
} else { } else {
return permission != PermissionGroup.unknown && return permission != PermissionGroup.unknown &&
permission != PermissionGroup.mediaLibrary && permission != PermissionGroup.mediaLibrary &&
......
...@@ -23,6 +23,7 @@ typedef NS_ENUM(int, PermissionGroup) { ...@@ -23,6 +23,7 @@ typedef NS_ENUM(int, PermissionGroup) {
PermissionGroupStorage, PermissionGroupStorage,
PermissionGroupIgnoreBatteryOptimizations, PermissionGroupIgnoreBatteryOptimizations,
PermissionGroupNotification, PermissionGroupNotification,
PermissionGroupAccessMediaLocation,
PermissionGroupUnknown, PermissionGroupUnknown,
}; };
......
...@@ -153,8 +153,11 @@ class PermissionGroup { ...@@ -153,8 +153,11 @@ class PermissionGroup {
/// iOS: Notification /// iOS: Notification
static const PermissionGroup notification = PermissionGroup._(16); static const PermissionGroup notification = PermissionGroup._(16);
/// Android: Allows an application to access any geographic locations persisted in the user's shared collection.
static const PermissionGroup access_media_location = PermissionGroup._(17);
/// The unknown permission only used for return type, never requested /// The unknown permission only used for return type, never requested
static const PermissionGroup unknown = PermissionGroup._(17); static const PermissionGroup unknown = PermissionGroup._(18);
static const List<PermissionGroup> values = <PermissionGroup>[ static const List<PermissionGroup> values = <PermissionGroup>[
calendar, calendar,
...@@ -174,6 +177,7 @@ class PermissionGroup { ...@@ -174,6 +177,7 @@ class PermissionGroup {
storage, storage,
ignoreBatteryOptimizations, ignoreBatteryOptimizations,
notification, notification,
access_media_location,
unknown, unknown,
]; ];
...@@ -195,6 +199,7 @@ class PermissionGroup { ...@@ -195,6 +199,7 @@ class PermissionGroup {
'storage', 'storage',
'ignoreBatteryOptimizations', 'ignoreBatteryOptimizations',
'notification', 'notification',
'access_media_location',
'unknown', 'unknown',
]; ];
......
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