From 2b5331e3ffa729625863fbcc955f1c7b5262d333 Mon Sep 17 00:00:00 2001 From: maxwen Date: Wed, 25 May 2016 21:52:46 +0200 Subject: Snap: Remove storage menu if no external storage available Change-Id: I9807c7f9303f17eb971ff1a82fbd35dfbdbfa529 Signed-off-by: Zdrowy Gosciu --- src/com/android/camera/CameraActivity.java | 1 + src/com/android/camera/CameraSettings.java | 11 +++++++++-- src/com/android/camera/SDCard.java | 15 ++++++++++++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index a9a78e7b3..6a3bddbd2 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -337,6 +337,7 @@ public class CameraActivity extends Activity @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "SDcard status changed, update storage space"); + SDCard.instance().scanVolumes(); updateStorageSpaceAndHint(); } }; diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java index bc717c71f..bf6dfc080 100644 --- a/src/com/android/camera/CameraSettings.java +++ b/src/com/android/camera/CameraSettings.java @@ -900,6 +900,7 @@ public class CameraSettings { ListPreference videoHfrMode = group.findPreference(KEY_VIDEO_HIGH_FRAME_RATE); ListPreference seeMoreMode = group.findPreference(KEY_SEE_MORE); + ListPreference savePath = group.findPreference(KEY_CAMERA_SAVEPATH); // Since the screen could be loaded from different resources, we need // to check if the preference is available here @@ -1013,7 +1014,7 @@ public class CameraSettings { final String CAMERA_SAVEPATH_SDCARD = "1"; final int CAMERA_SAVEPATH_SDCARD_IDX = 1; final int CAMERA_SAVEPATH_PHONE_IDX = 0; - ListPreference savePath = group.findPreference(KEY_CAMERA_SAVEPATH); + SharedPreferences pref = group.getSharedPreferences(); String savePathValue = null; if (pref != null) { @@ -1029,7 +1030,13 @@ public class CameraSettings { Log.d(TAG, "set Phone as save path when sdCard is unavailable."); savePath.setValueIndex(CAMERA_SAVEPATH_PHONE_IDX); } - } + } + } + if (savePath != null) { + Log.d(TAG, "check storage menu " + SDCard.instance().isWriteable()); + if (!SDCard.instance().isWriteable()) { + removePreference(group, savePath.getKey()); + } } qcomInitPreferences(group); diff --git a/src/com/android/camera/SDCard.java b/src/com/android/camera/SDCard.java index 8fda17c67..fa532f820 100644 --- a/src/com/android/camera/SDCard.java +++ b/src/com/android/camera/SDCard.java @@ -89,13 +89,22 @@ public class SDCard { return mVolume.getState(); } - private SDCard(Context context) { - try { - mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); + public void scanVolumes() { + if (mStorageManager != null) { final StorageVolume[] volumes = mStorageManager.getVolumeList(); if (volumes.length > VOLUME_SDCARD_INDEX) { mVolume = volumes[VOLUME_SDCARD_INDEX]; + Log.i(TAG, "found SDCard volume"); } + } else { + Log.e(TAG, "couldn't talk to MountService"); + } + } + + private SDCard(Context context) { + try { + mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE); + scanVolumes(); } catch (Exception e) { Log.e(TAG, "couldn't talk to MountService", e); } -- cgit v1.2.3