summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorjunjiez <junjiez@codeaurora.org>2016-08-10 15:43:48 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-04 18:38:26 -0700
commitf5bb47bbedc5694ab0a63fde655fd99b1a3e5759 (patch)
tree6a284d6da5ea6d5aab06e2c5119a9c37b512e3a1 /src/com/android
parent050fe78517519b689ce5adff1cf2c074bcbd186e (diff)
downloadandroid_packages_apps_Snap-f5bb47bbedc5694ab0a63fde655fd99b1a3e5759.tar.gz
android_packages_apps_Snap-f5bb47bbedc5694ab0a63fde655fd99b1a3e5759.tar.bz2
android_packages_apps_Snap-f5bb47bbedc5694ab0a63fde655fd99b1a3e5759.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')
-rw-r--r--[-rwxr-xr-x]src/com/android/camera/CameraActivity.java11
-rw-r--r--src/com/android/camera/PermissionsActivity.java39
2 files changed, 36 insertions, 14 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index e5c24fff8..a808dbf60 100755..100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -1674,9 +1674,14 @@ public class CameraActivity extends Activity
private boolean checkPermissions() {
boolean requestPermission = false;
- if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED &&
- checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED &&
- checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
+ if (checkSelfPermission(Manifest.permission.CAMERA) ==
+ PackageManager.PERMISSION_GRANTED &&
+ checkSelfPermission(Manifest.permission.RECORD_AUDIO) ==
+ PackageManager.PERMISSION_GRANTED &&
+ checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
+ PackageManager.PERMISSION_GRANTED &&
+ checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) ==
+ PackageManager.PERMISSION_GRANTED) {
mHasCriticalPermissions = true;
} else {
mHasCriticalPermissions = false;
diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java
index 5ebe72075..6cc38f3c9 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;
@@ -72,8 +73,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;
@@ -107,12 +110,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);
@@ -124,7 +134,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;
@@ -132,15 +143,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;
@@ -149,14 +164,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();