diff options
-rw-r--r--[-rwxr-xr-x] | src/com/android/camera/CameraActivity.java | 11 | ||||
-rw-r--r-- | src/com/android/camera/PermissionsActivity.java | 39 |
2 files changed, 36 insertions, 14 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 5666331fa..ebc52c6c6 100755..100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1665,9 +1665,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 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(); |