summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChao Zhang <chaoz@codeaurora.org>2016-04-07 20:55:03 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-04-07 06:16:05 -0700
commit0404c64f4f6111aca426dab241a144466e888edd (patch)
treeb1a36dee125d71732dfdaa3b5c2fdd5b4e2f075a /src
parent486c32c42f7113e4bebc968d9a8e16b6f2f82eaf (diff)
downloadandroid_packages_apps_Gallery2-0404c64f4f6111aca426dab241a144466e888edd.tar.gz
android_packages_apps_Gallery2-0404c64f4f6111aca426dab241a144466e888edd.tar.bz2
android_packages_apps_Gallery2-0404c64f4f6111aca426dab241a144466e888edd.zip
Gallery2: fix crash if disable gallery's storage permission in settings.
GalleryActivity just request WRITE_EXTERNAL_STORAGE permission, so it will occur crash when need READ_EXTERNAL_STORAGE permission; Request both WRITE_EXTERNAL_STORAGE and READ_EXTERNAL_STORAGE permissions in GalleryActivity. Change-Id: I31cf37e231d152cfabaaf2ded0ac0d88f5b9bb8d CRs-Fixed: 997205
Diffstat (limited to 'src')
-rw-r--r--src/com/android/gallery3d/app/GalleryActivity.java49
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;