From 6a678360e603d85314b5241c43424b174dbee6af Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 16 Oct 2012 17:40:46 +0400 Subject: check whether external storage is available before accessing it --- src/org/fox/ttcomics/ComicListFragment.java | 6 +++--- src/org/fox/ttcomics/CommonActivity.java | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/org/fox/ttcomics/ComicListFragment.java b/src/org/fox/ttcomics/ComicListFragment.java index 9c2b3a2..d307354 100644 --- a/src/org/fox/ttcomics/ComicListFragment.java +++ b/src/org/fox/ttcomics/ComicListFragment.java @@ -117,7 +117,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { ImageView thumbnail = (ImageView) v.findViewById(R.id.thumbnail); if (thumbnail != null) { - if (thumbnailFile.exists()) { + if (m_activity.isStorageAvailable() && thumbnailFile.exists()) { // final BitmapFactory.Options options = new BitmapFactory.Options(); @@ -260,7 +260,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { try { int size = m_activity.getSize(filePath); - if (size == -1 || fullRescan) { + if (m_activity.isStorageWritable() && (size == -1 || fullRescan)) { CbzComicArchive cba = new CbzComicArchive(filePath); @@ -345,7 +345,7 @@ public class ComicListFragment extends Fragment implements OnItemClickListener { String comicsDir = m_prefs.getString("comics_directory", null); - if (comicsDir != null) { + if (comicsDir != null && m_activity.isStorageAvailable()) { rescanTask.execute(m_baseDirectory.length() > 0 ? m_baseDirectory : comicsDir); } } diff --git a/src/org/fox/ttcomics/CommonActivity.java b/src/org/fox/ttcomics/CommonActivity.java index 6d65ea1..d7b420f 100644 --- a/src/org/fox/ttcomics/CommonActivity.java +++ b/src/org/fox/ttcomics/CommonActivity.java @@ -35,6 +35,9 @@ public class CommonActivity extends FragmentActivity { protected SyncClient m_syncClient = new SyncClient(); private boolean m_smallScreenMode = true; + + private boolean m_storageAvailable; + private boolean m_storageWritable; @Override public void onCreate(Bundle savedInstanceState) { @@ -47,6 +50,18 @@ public class CommonActivity extends FragmentActivity { public void onResume() { super.onResume(); + String state = Environment.getExternalStorageState(); + + if (Environment.MEDIA_MOUNTED.equals(state)) { + m_storageAvailable = true; + } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { + m_storageAvailable = true; + m_storageWritable = false; + } else { + m_storageAvailable = false; + m_storageWritable = false; + } + if (m_prefs.getBoolean("use_position_sync", false)) { String googleAccount = getGoogleAccount(); @@ -270,4 +285,12 @@ public class CommonActivity extends FragmentActivity { } } } + + public boolean isStorageAvailable() { + return m_storageAvailable; + } + + public boolean isStorageWritable() { + return m_storageWritable; + } } -- cgit v1.2.3