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 {
private static final int PERMISSION_GROUP_STORAGE = 14;
private static final int PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS = 15;
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) {
this.mRegistrar = mRegistrar;
......@@ -87,6 +88,7 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
PERMISSION_GROUP_STORAGE,
PERMISSION_GROUP_IGNORE_BATTERY_OPTIMIZATIONS,
PERMISSION_GROUP_NOTIFICATION,
PERMISSION_GROUP_ACCESS_MEDIA_LOCATION,
PERMISSION_GROUP_UNKNOWN,
})
private @interface PermissionGroup {
......@@ -195,6 +197,8 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
case Manifest.permission.READ_EXTERNAL_STORAGE:
case Manifest.permission.WRITE_EXTERNAL_STORAGE:
return PERMISSION_GROUP_STORAGE;
case Manifest.permission.ACCESS_MEDIA_LOCATION:
return PERMISSION_GROUP_ACCESS_MEDIA_LOCATION;
default:
return PERMISSION_GROUP_UNKNOWN;
}
......@@ -666,6 +670,11 @@ public class PermissionHandlerPlugin implements MethodCallHandler {
permissionNames.add(Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
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_MEDIA_LIBRARY:
case PERMISSION_GROUP_PHOTOS:
......
......@@ -46,4 +46,8 @@
<!-- Permissions options for the `sensors` group -->
<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>
......@@ -51,6 +51,9 @@
<!-- Permissions options for the `sensors` group -->
<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
android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher"
......
......@@ -30,8 +30,8 @@ class MyApp extends StatelessWidget {
return permission != PermissionGroup.unknown &&
permission != PermissionGroup.sms &&
permission != PermissionGroup.storage &&
permission !=
PermissionGroup.ignoreBatteryOptimizations;
permission != PermissionGroup.ignoreBatteryOptimizations &&
permission != PermissionGroup.access_media_location;
} else {
return permission != PermissionGroup.unknown &&
permission != PermissionGroup.mediaLibrary &&
......
......@@ -23,6 +23,7 @@ typedef NS_ENUM(int, PermissionGroup) {
PermissionGroupStorage,
PermissionGroupIgnoreBatteryOptimizations,
PermissionGroupNotification,
PermissionGroupAccessMediaLocation,
PermissionGroupUnknown,
};
......
......@@ -153,8 +153,11 @@ class PermissionGroup {
/// iOS: Notification
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
static const PermissionGroup unknown = PermissionGroup._(17);
static const PermissionGroup unknown = PermissionGroup._(18);
static const List<PermissionGroup> values = <PermissionGroup>[
calendar,
......@@ -174,6 +177,7 @@ class PermissionGroup {
storage,
ignoreBatteryOptimizations,
notification,
access_media_location,
unknown,
];
......@@ -195,6 +199,7 @@ class PermissionGroup {
'storage',
'ignoreBatteryOptimizations',
'notification',
'access_media_location',
'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