From 161d466da681a188b5c13472b8e186ba7cbb0bea Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Fri, 24 Jun 2016 15:58:31 -0700 Subject: SnapdragonCamera: Fix first-time crash and cleanup permissions As onCreate skips the creation of setting manager when the critical permissions are not granted, this causes the onDestroy to call setting manager destroy function with null pointer. Fix the issue with null check. In addition, remove unused permissions from manifest file Change-Id: I99b5f09449aacfb7eb9a5771e446df75956a9827 CRs-Fixed: 1034202 --- AndroidManifest.xml | 10 ---------- src/com/android/camera/CameraActivity.java | 8 +++++--- src/com/android/camera/PermissionsActivity.java | 4 ++-- 3 files changed, 7 insertions(+), 15 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 12a86bb9b..53ebaa39d 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -13,20 +13,10 @@ - - - - - - - - - - diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 1b6031b53..d324776c3 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1648,12 +1648,11 @@ public class CameraActivity extends Activity if (checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED && - checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { + checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) { mHasCriticalPermissions = true; } else { mHasCriticalPermissions = false; } - if ((checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) || !mHasCriticalPermissions) { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); @@ -1744,7 +1743,10 @@ public class CameraActivity extends Activity mWakeLock.release(); Log.d(TAG, "wake lock release"); } - SettingsManager.getInstance().destroyInstance(); + SettingsManager settingsMngr = SettingsManager.getInstance(); + if (settingsMngr != null) { + settingsMngr.destroyInstance(); + } if (mCursor != null) { getContentResolver().unregisterContentObserver(mLocalImagesObserver); getContentResolver().unregisterContentObserver(mLocalVideosObserver); diff --git a/src/com/android/camera/PermissionsActivity.java b/src/com/android/camera/PermissionsActivity.java index 1d6219195..2b5901a58 100644 --- a/src/com/android/camera/PermissionsActivity.java +++ b/src/com/android/camera/PermissionsActivity.java @@ -67,7 +67,7 @@ public class PermissionsActivity extends Activity { mFlagHasMicrophonePermission = true; } - if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) + if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { mNumPermissionsToRequest++; mShouldRequestStoragePermission = true; @@ -103,7 +103,7 @@ public class PermissionsActivity extends Activity { permissionsRequestIndex++; } if (mShouldRequestStoragePermission) { - permissionsToRequest[permissionsRequestIndex] = Manifest.permission.READ_EXTERNAL_STORAGE; + permissionsToRequest[permissionsRequestIndex] = Manifest.permission.WRITE_EXTERNAL_STORAGE; mIndexPermissionRequestStorage = permissionsRequestIndex; permissionsRequestIndex++; } -- cgit v1.2.3