Navigation voice changer app for Android
Revision | f494f2b361899892c9e8e93112a826bb1b8b967b (tree) |
---|---|
Time | 2013-07-30 19:45:45 |
Author | ![]() |
Commiter | HMML |
Fix crush without SD, and show warning.
@@ -35,5 +35,7 @@ | ||
35 | 35 | <string name="title_activity_download">DownloadActivity</string> |
36 | 36 | <string name="guide_download">Tap to download. Then push back button to move to install view to install.</string> |
37 | 37 | <string name="download_progress">Donwloading...</string> |
38 | + <string name="err_no_sd">No external storage is detected. You need to check your SD card or storage setting.</string> | |
39 | + <string name="err_no_sd_title">Medium Error</string> | |
38 | 40 | |
39 | 41 | </resources> |
@@ -3,7 +3,6 @@ package jp.nekoteki.android.navivoicechanger; | ||
3 | 3 | import java.io.IOException; |
4 | 4 | import java.io.InputStream; |
5 | 5 | import java.util.ArrayList; |
6 | -import java.util.LinkedHashMap; | |
7 | 6 | import java.util.List; |
8 | 7 | |
9 | 8 | import net.arnx.jsonic.JSON; |
@@ -24,10 +23,8 @@ import android.view.ViewGroup.LayoutParams; | ||
24 | 23 | import android.widget.AbsListView.OnScrollListener; |
25 | 24 | import android.widget.AbsListView; |
26 | 25 | import android.widget.AdapterView; |
27 | -import android.widget.AdapterViewFlipper; | |
28 | 26 | import android.widget.BaseAdapter; |
29 | 27 | import android.widget.LinearLayout; |
30 | -import android.widget.ListAdapter; | |
31 | 28 | import android.widget.ListView; |
32 | 29 | import android.widget.RelativeLayout; |
33 | 30 | import android.widget.TextView; |
@@ -4,7 +4,6 @@ import java.io.BufferedInputStream; | ||
4 | 4 | import java.io.File; |
5 | 5 | import java.io.FileFilter; |
6 | 6 | import java.io.FileInputStream; |
7 | -import java.io.FileNotFoundException; | |
8 | 7 | import java.io.FileOutputStream; |
9 | 8 | import java.io.IOException; |
10 | 9 | import java.io.InputStream; |
@@ -21,6 +20,7 @@ import java.util.zip.ZipException; | ||
21 | 20 | import android.media.MediaPlayer; |
22 | 21 | import android.net.Uri; |
23 | 22 | import android.util.Log; |
23 | +import android.app.AlertDialog; | |
24 | 24 | import android.content.Context; |
25 | 25 | import android.content.res.AssetManager; |
26 | 26 |
@@ -69,6 +69,7 @@ public class VoiceData { | ||
69 | 69 | ArrayList<VoiceData> list = new ArrayList<VoiceData>(); |
70 | 70 | |
71 | 71 | File vdDir = getBaseDir(context); |
72 | + if (vdDir == null) return list; | |
72 | 73 | Log.d(VoiceData.class.getClass().getName(), "Voice Data Dir = "+vdDir.getAbsolutePath()); |
73 | 74 | |
74 | 75 | File[] vddlist = vdDir.listFiles(); |
@@ -94,6 +95,10 @@ public class VoiceData { | ||
94 | 95 | File baseDir = context.getExternalFilesDir(null); |
95 | 96 | if (baseDir == null) { |
96 | 97 | Log.i("VoiceData", "Can't get external storage path."); |
98 | + AlertDialog.Builder builder = new AlertDialog.Builder(context); | |
99 | + builder.setMessage(R.string.err_no_sd).setTitle(R.string.err_no_sd_title); | |
100 | + AlertDialog dialog = builder.create(); | |
101 | + dialog.show(); | |
97 | 102 | return null; |
98 | 103 | } |
99 | 104 | File vdDir = new File(baseDir, "voicedata"); |