Skip to content

Commit

Permalink
released v1.0.13 that fixes requesting multiple permissions.
Browse files Browse the repository at this point in the history
  • Loading branch information
kosh committed Sep 4, 2016
1 parent 0b26422 commit 3756c5c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Nexus 10 (L)

#### Gradle
```groovy
compile 'com.github.k0shk0sh:PermissionHelper:1.0.12'
compile 'com.github.k0shk0sh:PermissionHelper:1.0.13'
```

#### Maven
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
VERSION_NAME=1.0.12
VERSION_CODE=12
VERSION_NAME=1.0.13
VERSION_CODE=13
GROUP=com.github.k0shk0sh
POM_DESCRIPTION=A Library that simplify Android Runtime Permissions
POM_URL=https://github.com/k0shk0sh/PermissionHelper
Expand Down
4 changes: 2 additions & 2 deletions permission/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
versionCode 12
versionName "1.0.12"
versionCode 13
versionName "1.0.13"
}
buildTypes {
release {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,17 +164,18 @@ private void handleSingle(@NonNull String permissionName) {
/**
* internal usage.
*/
private void handleMulti(@NonNull String[] permissionsName) {
String[] permissions = declinedPermissions(context, permissionsName);
if (permissions.length == 0) {
permissionCallback.onPermissionGranted(permissionsName);
private void handleMulti(@NonNull String[] permissionNames) {
List<String> permissions = declinedPermissionsAsList(context, permissionNames);
if (permissions.isEmpty()) {
permissionCallback.onPermissionGranted(permissionNames);
return;
}
for (String permission : permissions) {
if (permission != null) {
handleSingle(permission);
}
boolean hasAlertWindowPermission = permissions.contains(Manifest.permission.SYSTEM_ALERT_WINDOW);
if (hasAlertWindowPermission) {
int index = permissions.indexOf(Manifest.permission.SYSTEM_ALERT_WINDOW);
permissions.remove(index);
}
ActivityCompat.requestPermissions(context, permissions.toArray(new String[permissions.size()]), REQUEST_PERMISSIONS);
}

/**
Expand Down Expand Up @@ -310,13 +311,23 @@ public void openSettingsScreen() {
public static String[] declinedPermissions(@NonNull Context context, @NonNull String[] permissions) {
List<String> permissionsNeeded = new ArrayList<>();
for (String permission : permissions) {
if (isPermissionDeclined(context, permission)) {
if (isPermissionDeclined(context, permission) && permissionExists(context, permission)) {
permissionsNeeded.add(permission);
}
}
return permissionsNeeded.toArray(new String[permissionsNeeded.size()]);
}

public static List<String> declinedPermissionsAsList(@NonNull Context context, @NonNull String[] permissions) {
List<String> permissionsNeeded = new ArrayList<>();
for (String permission : permissions) {
if (isPermissionDeclined(context, permission) && permissionExists(context, permission)) {
permissionsNeeded.add(permission);
}
}
return permissionsNeeded;
}

/**
* return true if permission is granted, false otherwise.
* <p/>
Expand Down Expand Up @@ -406,5 +417,4 @@ public static void removeGrantedPermissions(@NonNull Context context, @NonNull L
models.removeAll(granted);
}
}

}

0 comments on commit 3756c5c

Please sign in to comment.