summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-04-12 22:19:31 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-04-12 22:19:31 -0700
commit9ecf6fb115f0e411b5344bf8364abdec3594b90e (patch)
treefec1c073fbe506523346d4351967653d6cb80ffd /src
parent8198f6cae1e38f3383f4a6476e6e248108f3ee73 (diff)
parent0404c64f4f6111aca426dab241a144466e888edd (diff)
downloadandroid_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')
-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;