summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/PermissionsActivity.java
diff options
context:
space:
mode:
authorjunjiez <junjiez@codeaurora.org>2016-08-10 15:43:48 +0800
committerjunjiez <junjiez@codeaurora.org>2016-08-17 09:57:20 +0800
commit11c04b2688513382f3db00ec24c001d4845df531 (patch)
treecb1d905485c16d5032f94ea226562cb157ed03f2 /src/com/android/camera/PermissionsActivity.java
parentbec67f460a2acb5d239ab5455a8eb0b8a66cfe23 (diff)
downloadandroid_packages_apps_Snap-11c04b2688513382f3db00ec24c001d4845df531.tar.gz
android_packages_apps_Snap-11c04b2688513382f3db00ec24c001d4845df531.tar.bz2
android_packages_apps_Snap-11c04b2688513382f3db00ec24c001d4845df531.zip
SnapdragonCamera: fix crash when deny storage permission
The permission group of storage will not be granted automatically by system when one permission in the group is granted and this will only happen when device is not in default mode. So we need to request both read and write storage permissions. Change-Id: Id8ab4d2dd74a958c17fe3fab19bfe0a61909a602 CRs-Fixed: 1051976
Diffstat (limited to 'src/com/android/camera/PermissionsActivity.java')
-rw-r--r--src/com/android/camera/PermissionsActivity.java39
1 files changed, 28 insertions, 11 deletions
diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java
index c5e43e56d..36c061582 100644
--- a/src/com/android/camera/PermissionsActivity.java
+++ b/src/com/android/camera/PermissionsActivity.java
@@ -23,7 +23,8 @@ public class PermissionsActivity extends Activity {
private int mIndexPermissionRequestCamera;
private int mIndexPermissionRequestMicrophone;
private int mIndexPermissionRequestLocation;
- private int mIndexPermissionRequestStorage;
+ private int mIndexPermissionRequestStorageWrite;
+ private int mIndexPermissionRequestStorageRead;
private boolean mShouldRequestCameraPermission;
private boolean mShouldRequestMicrophonePermission;
private boolean mShouldRequestLocationPermission;
@@ -68,8 +69,10 @@ public class PermissionsActivity extends Activity {
}
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED ||
+ checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
- mNumPermissionsToRequest++;
+ mNumPermissionsToRequest = mNumPermissionsToRequest + 2;
mShouldRequestStoragePermission = true;
} else {
mFlagHasStoragePermission = true;
@@ -103,12 +106,19 @@ public class PermissionsActivity extends Activity {
permissionsRequestIndex++;
}
if (mShouldRequestStoragePermission) {
- permissionsToRequest[permissionsRequestIndex] = Manifest.permission.WRITE_EXTERNAL_STORAGE;
- mIndexPermissionRequestStorage = permissionsRequestIndex;
+ permissionsToRequest[permissionsRequestIndex] =
+ Manifest.permission.WRITE_EXTERNAL_STORAGE;
+ mIndexPermissionRequestStorageWrite = permissionsRequestIndex;
+ permissionsRequestIndex++;
+ permissionsToRequest[permissionsRequestIndex] =
+ Manifest.permission.READ_EXTERNAL_STORAGE;
+ mIndexPermissionRequestStorageRead = permissionsRequestIndex;
permissionsRequestIndex++;
+
}
if (mShouldRequestLocationPermission) {
- permissionsToRequest[permissionsRequestIndex] = Manifest.permission.ACCESS_COARSE_LOCATION;
+ permissionsToRequest[permissionsRequestIndex] =
+ Manifest.permission.ACCESS_COARSE_LOCATION;
mIndexPermissionRequestLocation = permissionsRequestIndex;
}
requestPermissions(permissionsToRequest, PERMISSION_REQUEST_CODE);
@@ -120,7 +130,8 @@ public class PermissionsActivity extends Activity {
if (mShouldRequestCameraPermission) {
if ((grantResults.length >= mIndexPermissionRequestCamera + 1) &&
- (grantResults[mIndexPermissionRequestCamera] == PackageManager.PERMISSION_GRANTED)) {
+ (grantResults[mIndexPermissionRequestCamera] ==
+ PackageManager.PERMISSION_GRANTED)) {
mFlagHasCameraPermission = true;
} else {
mCriticalPermissionDenied = true;
@@ -128,15 +139,19 @@ public class PermissionsActivity extends Activity {
}
if (mShouldRequestMicrophonePermission) {
if ((grantResults.length >= mIndexPermissionRequestMicrophone + 1) &&
- (grantResults[mIndexPermissionRequestMicrophone] == PackageManager.PERMISSION_GRANTED)) {
+ (grantResults[mIndexPermissionRequestMicrophone] ==
+ PackageManager.PERMISSION_GRANTED)) {
mFlagHasMicrophonePermission = true;
} else {
mCriticalPermissionDenied = true;
}
}
if (mShouldRequestStoragePermission) {
- if ((grantResults.length >= mIndexPermissionRequestStorage + 1) &&
- (grantResults[mIndexPermissionRequestStorage] == PackageManager.PERMISSION_GRANTED)) {
+ if ((grantResults.length >= mIndexPermissionRequestStorageRead + 1) &&
+ (grantResults[mIndexPermissionRequestStorageWrite] ==
+ PackageManager.PERMISSION_GRANTED) &&
+ (grantResults[mIndexPermissionRequestStorageRead] ==
+ PackageManager.PERMISSION_GRANTED)) {
mFlagHasStoragePermission = true;
} else {
mCriticalPermissionDenied = true;
@@ -145,14 +160,16 @@ public class PermissionsActivity extends Activity {
if (mShouldRequestLocationPermission) {
if ((grantResults.length >= mIndexPermissionRequestLocation + 1) &&
- (grantResults[mIndexPermissionRequestLocation] == PackageManager.PERMISSION_GRANTED)) {
+ (grantResults[mIndexPermissionRequestLocation] ==
+ PackageManager.PERMISSION_GRANTED)) {
// Do nothing
} else {
// Do nothing
}
}
- if (mFlagHasCameraPermission && mFlagHasMicrophonePermission && mFlagHasStoragePermission) {
+ if (mFlagHasCameraPermission && mFlagHasMicrophonePermission &&
+ mFlagHasStoragePermission) {
handlePermissionsSuccess();
} else if (mCriticalPermissionDenied) {
handlePermissionsFailure();