diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-04-12 22:19:31 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-04-12 22:19:31 -0700 |
| commit | 9ecf6fb115f0e411b5344bf8364abdec3594b90e (patch) | |
| tree | fec1c073fbe506523346d4351967653d6cb80ffd /src/com | |
| parent | 8198f6cae1e38f3383f4a6476e6e248108f3ee73 (diff) | |
| parent | 0404c64f4f6111aca426dab241a144466e888edd (diff) | |
| download | android_packages_apps_Gallery2-9ecf6fb115f0e411b5344bf8364abdec3594b90e.tar.gz android_packages_apps_Gallery2-9ecf6fb115f0e411b5344bf8364abdec3594b90e.tar.bz2 android_packages_apps_Gallery2-9ecf6fb115f0e411b5344bf8364abdec3594b90e.zip | |
Merge "Gallery2: fix crash if disable gallery's storage permission in settings." into android_ui.lnx.1.2-dev
Diffstat (limited to 'src/com')
| -rw-r--r-- | src/com/android/gallery3d/app/GalleryActivity.java | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/src/com/android/gallery3d/app/GalleryActivity.java b/src/com/android/gallery3d/app/GalleryActivity.java index 9d9f92cff..f05528291 100644 --- a/src/com/android/gallery3d/app/GalleryActivity.java +++ b/src/com/android/gallery3d/app/GalleryActivity.java @@ -123,12 +123,8 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On initView(); mSavedInstanceState = savedInstanceState; - if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) - != PackageManager.PERMISSION_GRANTED) { - requestPermissions(new String[] { - Manifest.permission.WRITE_EXTERNAL_STORAGE - }, PERMISSION_REQUEST_STORAGE); - } else { + + if (!needRequestStoragePermission()) { init(); } } @@ -152,8 +148,7 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_STORAGE: { - if (grantResults.length > 0 - && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if (checkPermissionGrantResults(grantResults)) { init(); } else { finish(); @@ -162,6 +157,44 @@ public final class GalleryActivity extends AbstractGalleryActivity implements On } } + private boolean needRequestStoragePermission() { + boolean needRequest = false; + String[] permissions = { + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.READ_EXTERNAL_STORAGE + }; + ArrayList<String> permissionList = new ArrayList<String>(); + for (String permission : permissions) { + if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { + permissionList.add(permission); + needRequest = true; + } + } + + if (needRequest) { + int count = permissionList.size(); + if (count > 0) { + String[] permissionArray = new String[count]; + for (int i = 0; i < count; i++) { + permissionArray[i] = permissionList.get(i); + } + + requestPermissions(permissionArray, PERMISSION_REQUEST_STORAGE); + } + } + + return needRequest; + } + + private boolean checkPermissionGrantResults(int[] grantResults) { + for (int result : grantResults) { + if (result != PackageManager.PERMISSION_GRANTED) { + return false; + } + } + return true; + } + private static class ActionItem { public int action; public int title; |
