Commit a6fdac1c by Maurits van Beusekom Committed by GitHub

Merge pull request #453 from Baseflow/remove_shared_pref

Remove shared pref
parents fb752f41 7dc2c601
......@@ -137,12 +137,12 @@ You can remove permissions you don't use:
## How to use
There are a number of [`Permission`](https://pub.dev/documentation/permission_handler_platform_interface/latest/permission_handler_platform_interface/Permission-class.html#constants)s.
You can get a `Permission`'s `status`, which is either `undetermined`, `granted`, `denied`, `restricted` or `permanentlyDenied`.
You can get a `Permission`'s `status`, which is either `granted`, `denied`, `restricted` or `permanentlyDenied`.
```dart
var status = await Permission.camera.status;
if (status.isUndetermined) {
// We didn't ask for permission yet.
if (status.denied) {
// We didn't ask for permission yet or the permission has been denied before but not permanently.
}
// You can can also directly ask the permission about its status.
......
## 6.0.0
* Migrated to null safety
* Removed PermissionStatus.undetermined, PermissionStatus.denied will be used instead.
## 5.1.0+2
......
......@@ -63,16 +63,14 @@ final class PermissionConstants {
static final int PERMISSION_STATUS_DENIED = 0;
static final int PERMISSION_STATUS_GRANTED = 1;
static final int PERMISSION_STATUS_RESTRICTED = 2;
static final int PERMISSION_STATUS_NOT_DETERMINED = 3;
static final int PERMISSION_STATUS_LIMITED = 4;
static final int PERMISSION_STATUS_NEVER_ASK_AGAIN = 5;
static final int PERMISSION_STATUS_LIMITED = 3;
static final int PERMISSION_STATUS_NEVER_ASK_AGAIN = 4;
@Retention(RetentionPolicy.SOURCE)
@IntDef({
PERMISSION_STATUS_DENIED,
PERMISSION_STATUS_GRANTED,
PERMISSION_STATUS_RESTRICTED,
PERMISSION_STATUS_NOT_DETERMINED,
PERMISSION_STATUS_LIMITED,
PERMISSION_STATUS_NEVER_ASK_AGAIN,
})
......
......@@ -104,7 +104,7 @@ final class PermissionManager {
// if we can't add as unknown and continue
if (names == null || names.isEmpty()) {
if (!requestResults.containsKey(permission)) {
requestResults.put(permission, PermissionConstants.PERMISSION_STATUS_NOT_DETERMINED);
requestResults.put(permission, PermissionConstants.PERMISSION_STATUS_DENIED);
}
continue;
......@@ -172,7 +172,7 @@ final class PermissionManager {
//if no permissions were found then there is an issue and permission is not set in Android manifest
if (names.size() == 0) {
Log.d(PermissionConstants.LOG_TAG, "No permissions found in manifest for: " + permission);
return PermissionConstants.PERMISSION_STATUS_NOT_DETERMINED;
return PermissionConstants.PERMISSION_STATUS_DENIED;
}
final boolean targetsMOrHigher = context.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.M;
......@@ -195,21 +195,11 @@ final class PermissionManager {
}
}
final int permissionStatus = ContextCompat.checkSelfPermission(context, name);
if (permissionStatus == PackageManager.PERMISSION_DENIED) {
if (!PermissionUtils.getRequestedPermissionBefore(context, name)) {
return PermissionConstants.PERMISSION_STATUS_NOT_DETERMINED;
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
PermissionUtils.isNeverAskAgainSelected(activity, name)) {
return PermissionConstants.PERMISSION_STATUS_NEVER_ASK_AGAIN;
} else {
if (permissionStatus != PackageManager.PERMISSION_GRANTED) {
return PermissionConstants.PERMISSION_STATUS_DENIED;
}
} else if (permissionStatus != PackageManager.PERMISSION_GRANTED) {
return PermissionConstants.PERMISSION_STATUS_DENIED;
}
}
}
return PermissionConstants.PERMISSION_STATUS_GRANTED;
}
......@@ -273,7 +263,7 @@ final class PermissionManager {
@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if(alreadyCalled || requestCode != PermissionConstants.PERMISSION_CODE_IGNORE_BATTERY_OPTIMIZATIONS) {
if (alreadyCalled || requestCode != PermissionConstants.PERMISSION_CODE_IGNORE_BATTERY_OPTIMIZATIONS) {
return false;
}
......@@ -314,8 +304,7 @@ final class PermissionManager {
}
@Override
public boolean onRequestPermissionsResult(int id, String[] permissions, int[] grantResults)
{
public boolean onRequestPermissionsResult(int id, String[] permissions, int[] grantResults) {
if (alreadyCalled || id != PermissionConstants.PERMISSION_CODE) {
return false;
}
......
......@@ -3,7 +3,6 @@ package com.baseflow.permissionhandler;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
......@@ -262,10 +261,6 @@ public class PermissionUtils {
if (names == null || names.isEmpty()) {
return;
}
for (String name : names) {
PermissionUtils.setRequestedPermission(activity, name);
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
......@@ -274,25 +269,7 @@ public class PermissionUtils {
return false;
}
return PermissionUtils.neverAskAgainSelected(activity, name);
}
@RequiresApi(api = Build.VERSION_CODES.M)
static boolean neverAskAgainSelected(final Activity activity, final String permission) {
final boolean hasRequestedPermissionBefore = getRequestedPermissionBefore(activity, permission);
final boolean shouldShowRequestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(activity, permission);
return hasRequestedPermissionBefore && !shouldShowRequestPermissionRationale;
}
static void setRequestedPermission(final Context context, final String permission) {
SharedPreferences genPrefs = context.getSharedPreferences("GENERIC_PREFERENCES", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = genPrefs.edit();
editor.putBoolean(permission, true);
editor.apply();
}
static boolean getRequestedPermissionBefore(final Context context, final String permission) {
SharedPreferences genPrefs = context.getSharedPreferences("GENERIC_PREFERENCES", Context.MODE_PRIVATE);
return genPrefs.getBoolean(permission, false);
final boolean shouldShowRequestPermissionRationale = ActivityCompat.shouldShowRequestPermissionRationale(activity, name);
return !shouldShowRequestPermissionRationale;
}
}
......@@ -17,7 +17,7 @@ class _PermissionState extends State<PermissionWidget> {
_PermissionState(this._permission);
final Permission _permission;
PermissionStatus _permissionStatus = PermissionStatus.undetermined;
PermissionStatus _permissionStatus = PermissionStatus.denied;
@override
void initState() {
......
......@@ -113,10 +113,10 @@ typedef NS_ENUM(int, PermissionGroup) {
typedef NS_ENUM(int, PermissionStatus) {
PermissionStatusDenied = 0,
PermissionStatusGranted,
PermissionStatusRestricted,
PermissionStatusNotDetermined,
PermissionStatusLimited,
PermissionStatusGranted = 1,
PermissionStatusRestricted = 2,
PermissionStatusLimited = 3,
PermissionStatusPermanentlyDenied = 4
};
typedef NS_ENUM(int, ServiceStatus) {
......
......@@ -19,7 +19,7 @@
return [AudioVideoPermissionStrategy permissionStatus:AVMediaTypeAudio];
#endif
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
- (ServiceStatus)checkServiceStatus:(PermissionGroup)permission {
......@@ -29,7 +29,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -40,18 +40,18 @@
#if PERMISSION_CAMERA
mediaType = AVMediaTypeVideo;
#else
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
return;
#endif
} else if (permission == PermissionGroupMicrophone) {
#if PERMISSION_MICROPHONE
mediaType = AVMediaTypeAudio;
#else
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
return;
#endif
} else {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
return;
}
......@@ -59,7 +59,7 @@
if (granted) {
completionHandler(PermissionStatusGranted);
} else {
completionHandler(PermissionStatusDenied);
completionHandler(PermissionStatusPermanentlyDenied);
}
}];
}
......@@ -69,16 +69,16 @@
switch (status) {
case AVAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case AVAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case AVAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case AVAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -20,7 +20,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
}
......@@ -37,11 +37,11 @@
switch (status) {
case CNAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case CNAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case CNAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case CNAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
......@@ -51,17 +51,17 @@
switch (status) {
case kABAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case kABAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case kABAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case kABAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
+ (void)requestPermissionsFromContactStore:(PermissionStatusHandler)completionHandler API_AVAILABLE(ios(9)) {
......@@ -71,18 +71,9 @@
if (granted) {
completionHandler(PermissionStatusGranted);
} else {
completionHandler(PermissionStatusDenied);
completionHandler(PermissionStatusPermanentlyDenied);
}
}];
ABAddressBookRequestAccessWithCompletion(ABAddressBookCreate(), ^(bool granted, CFErrorRef error) {
if (granted) {
completionHandler(PermissionStatusGranted);
} else {
completionHandler(PermissionStatusDenied);
}
});
}
+ (void)requestPermissionsFromAddressBook:(PermissionStatusHandler)completionHandler {
......@@ -90,7 +81,7 @@
if (granted) {
completionHandler(PermissionStatusGranted);
} else {
completionHandler(PermissionStatusDenied);
completionHandler(PermissionStatusPermanentlyDenied);
}
});
}
......
......@@ -20,7 +20,7 @@
#endif
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
- (ServiceStatus)checkServiceStatus:(PermissionGroup)permission {
......@@ -30,7 +30,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus permissionStatus = [self checkPermissionStatus:permission];
if (permissionStatus != PermissionStatusNotDetermined) {
if (permissionStatus != PermissionStatusDenied) {
completionHandler(permissionStatus);
return;
}
......@@ -41,18 +41,18 @@
#if PERMISSION_EVENTS
entityType = EKEntityTypeEvent;
#else
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
return;
#endif
} else if (permission == PermissionGroupReminders) {
#if PERMISSION_REMINDERS
entityType = EKEntityTypeReminder;
#else
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
return;
#endif
} else {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusPermanentlyDenied);
return;
}
......@@ -61,7 +61,7 @@
if (granted) {
completionHandler(PermissionStatusGranted);
} else {
completionHandler(PermissionStatusDenied);
completionHandler(PermissionStatusPermanentlyDenied);
}
}];
}
......@@ -71,16 +71,16 @@
switch (status) {
case EKAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case EKAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case EKAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case EKAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -35,7 +35,7 @@
PermissionStatus status = [self checkPermissionStatus:permission];
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse && permission == PermissionGroupLocationAlways) {
// don't do anything and continue requesting permissions
} else if (status != PermissionStatusNotDetermined) {
} else if (status != PermissionStatusDenied) {
completionHandler(status);
}
......@@ -105,12 +105,12 @@
if (permission == PermissionGroupLocationAlways) {
switch (authorizationStatus) {
case kCLAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case kCLAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case kCLAuthorizationStatusAuthorizedWhenInUse:
case kCLAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case kCLAuthorizationStatusAuthorizedAlways:
return PermissionStatusGranted;
}
......@@ -118,11 +118,11 @@
switch (authorizationStatus) {
case kCLAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case kCLAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case kCLAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case kCLAuthorizationStatusAuthorizedWhenInUse:
case kCLAuthorizationStatusAuthorizedAlways:
return PermissionStatusGranted;
......@@ -134,15 +134,15 @@
switch (authorizationStatus) {
case kCLAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case kCLAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case kCLAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case kCLAuthorizationStatusAuthorized:
return PermissionStatusGranted;
default:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
#pragma clang diagnostic pop
......
......@@ -19,7 +19,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -29,7 +29,7 @@
completionHandler([MediaLibraryPermissionStrategy determinePermissionStatus:status]);
}];
} else {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusPermanentlyDenied);
return;
}
}
......@@ -41,22 +41,22 @@
return [MediaLibraryPermissionStrategy determinePermissionStatus:status];
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
+ (PermissionStatus)determinePermissionStatus:(MPMediaLibraryAuthorizationStatus)authorizationStatus API_AVAILABLE(ios(9.3)){
switch (authorizationStatus) {
case MPMediaLibraryAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
case MPMediaLibraryAuthorizationStatusDenied:
return PermissionStatusDenied;
case MPMediaLibraryAuthorizationStatusDenied:
return PermissionStatusPermanentlyDenied;
case MPMediaLibraryAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case MPMediaLibraryAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -21,7 +21,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -33,8 +33,8 @@
authorizationOptions += UNAuthorizationOptionAlert;
authorizationOptions += UNAuthorizationOptionBadge;
[center requestAuthorizationWithOptions:(authorizationOptions) completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!granted || error != nil) {
completionHandler(PermissionStatusDenied);
if (error != nil || !granted) {
completionHandler(PermissionStatusPermanentlyDenied);
return;
}
......@@ -64,9 +64,9 @@
dispatch_semaphore_t sem = dispatch_semaphore_create(0);
[[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
if (settings.authorizationStatus == UNAuthorizationStatusDenied) {
permissionStatus = PermissionStatusDenied;
permissionStatus = PermissionStatusPermanentlyDenied;
} else if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
permissionStatus = PermissionStatusNotDetermined;
permissionStatus = PermissionStatusDenied;
}
dispatch_semaphore_signal(sem);
}];
......@@ -75,7 +75,7 @@
UIUserNotificationSettings * setting = [[UIApplication sharedApplication] currentUserNotificationSettings];
if (setting.types == UIUserNotificationTypeNone) permissionStatus = PermissionStatusDenied;
} else {
permissionStatus = PermissionStatusDenied;
permissionStatus = PermissionStatusPermanentlyDenied;
}
return permissionStatus;
}
......
......@@ -13,7 +13,7 @@
@implementation PhonePermissionStrategy
- (PermissionStatus)checkPermissionStatus:(PermissionGroup)permission {
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
- (ServiceStatus)checkServiceStatus:(PermissionGroup)permission {
......@@ -26,7 +26,7 @@
}
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusPermanentlyDenied);
}
......
......@@ -31,7 +31,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -61,18 +61,18 @@
+ (PermissionStatus)determinePermissionStatus:(PHAuthorizationStatus)authorizationStatus {
switch (authorizationStatus) {
case PHAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
case PHAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case PHAuthorizationStatusDenied:
return PermissionStatusDenied;
return PermissionStatusPermanentlyDenied;
case PHAuthorizationStatusAuthorized:
return PermissionStatusGranted;
case PHAuthorizationStatusLimited:
return PermissionStatusLimited;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -25,7 +25,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -35,14 +35,11 @@
NSDate *today = [NSDate new];
[motionManager queryActivityStartingFromDate:today toDate:today toQueue:[NSOperationQueue mainQueue] withHandler:^(NSArray<CMMotionActivity *> *__nullable activities, NSError *__nullable error) {
if (error != nil && error.code == CMErrorMotionActivityNotAuthorized) {
completionHandler(PermissionStatusDenied);
} else {
completionHandler(PermissionStatusGranted);
}
PermissionStatus status = [SensorPermissionStrategy permissionStatus];
completionHandler(status);
}];
} else {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
}
}
......@@ -54,13 +51,13 @@
switch (status) {
case CMAuthorizationStatusNotDetermined:
permissionStatus = PermissionStatusNotDetermined;
permissionStatus = PermissionStatusDenied;
break;
case CMAuthorizationStatusRestricted:
permissionStatus = PermissionStatusRestricted;
break;
case CMAuthorizationStatusDenied:
permissionStatus = PermissionStatusDenied;
permissionStatus = PermissionStatusPermanentlyDenied;
break;
case CMAuthorizationStatusAuthorized:
permissionStatus = PermissionStatusGranted;
......@@ -72,7 +69,7 @@
return permissionStatus;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -19,7 +19,7 @@
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
PermissionStatus status = [self checkPermissionStatus:permission];
if (status != PermissionStatusNotDetermined) {
if (status != PermissionStatusDenied) {
completionHandler(status);
return;
}
......@@ -29,7 +29,7 @@
completionHandler([SpeechPermissionStrategy determinePermissionStatus:authorizationStatus]);
}];
} else {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusDenied);
}
}
......@@ -40,22 +40,22 @@
return [SpeechPermissionStrategy determinePermissionStatus:status];
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
+ (PermissionStatus)determinePermissionStatus:(SFSpeechRecognizerAuthorizationStatus)authorizationStatus API_AVAILABLE(ios(10.0)){
switch (authorizationStatus) {
case SFSpeechRecognizerAuthorizationStatusNotDetermined:
return PermissionStatusNotDetermined;
case SFSpeechRecognizerAuthorizationStatusDenied:
return PermissionStatusDenied;
case SFSpeechRecognizerAuthorizationStatusDenied:
return PermissionStatusPermanentlyDenied;
case SFSpeechRecognizerAuthorizationStatusRestricted:
return PermissionStatusRestricted;
case SFSpeechRecognizerAuthorizationStatusAuthorized:
return PermissionStatusGranted;
}
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
@end
......
......@@ -9,7 +9,7 @@
@implementation UnknownPermissionStrategy
- (PermissionStatus)checkPermissionStatus:(PermissionGroup)permission {
return PermissionStatusNotDetermined;
return PermissionStatusDenied;
}
- (ServiceStatus)checkServiceStatus:(PermissionGroup)permission {
......@@ -17,6 +17,6 @@
}
- (void)requestPermission:(PermissionGroup)permission completionHandler:(PermissionStatusHandler)completionHandler {
completionHandler(PermissionStatusNotDetermined);
completionHandler(PermissionStatusPermanentlyDenied);
}
@end
......@@ -53,9 +53,6 @@ extension PermissionActions on Permission {
/// Shortcuts for checking the [status] of a [Permission].
extension PermissionCheckShortcuts on Permission {
/// If this permission was never requested before.
Future<bool> get isUndetermined => status.isUndetermined;
/// If the user granted this permission.
Future<bool> get isGranted => status.isGranted;
......
......@@ -16,7 +16,7 @@ dependencies:
flutter:
sdk: flutter
meta: ^1.3.0
permission_handler_platform_interface: ^3.0.0
permission_handler_platform_interface: ^3.0.0+1
dev_dependencies:
effective_dart: ^1.3.0
......
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