title: Text-to-speech output screen crashing
body: <p>I am working on a custom text-to-speech engine for android (just for one language). On most phones everything works correctly, but I have problems on nexus 4 with Kit Kat installed. My engine is successfully installed and it is visible under the available engines. I can choose it as my preferred engine. After I click on language options for my engine an alert dialog with just one language available appears(it's normal). But after I click on it, <em>settings</em> app crashes. It also happens every time after that when I try to open <em>Settings/Language&amp;Input/Text-to-speech output.</em>  I can see that under the <em>Default language</em> option <em>Checking...</em> is written. When I check <em>Stack trace</em> I can see that <em>MissingResourceExceptions: No 3-letter language code for locale</em> is thrown in function <em>com.android.setting.tts.TextToSpeechSettings.CheckDefaultLocale()</em></p>
  
  <p>I discovered that I really made a mistake with my language ISO3 code and I fixed it. When I install this version to Nexus 4 phone, which had no previous version of my app installed, crashes don't happen anymore. But when it is installed on the phone, which had previous version, the problem exists (although old version was uninstalled). I can see that Settings app is still using the old (wrong) ISO3 code. How is it possible if that first version was successfully uninstalled?</p>
  
  <p>I must say that I can use the talkback optins with my engine. But because of crashes it is impossible to change the preferred engine once my engine was chosen </p>
  
  <p>Here is my stacktrace   </p>
  
  <pre><code> 03-10 11:11:35.934: E/AndroidRuntime(10608): FATAL EXCEPTION: main
  03-10 11:11:35.934: E/AndroidRuntime(10608): Process: com.android.settings, PID: 10608
  03-10 11:11:35.934: E/AndroidRuntime(10608): java.util.MissingResourceException: No 3-letter language code for locale: hebrew
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at java.util.Locale.getISO3Language(Locale.java:540)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.settings.tts.TextToSpeechSettings.evaluateDefaultLocale(TextToSpeechSettings.java:284)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.settings.tts.TextToSpeechSettings.checkDefaultLocale(TextToSpeechSettings.java:270)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.settings.tts.TextToSpeechSettings.onInitEngine(TextToSpeechSettings.java:251)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.settings.tts.TextToSpeechSettings$1.onInit(TextToSpeechSettings.java:128)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.speech.tts.TextToSpeech.dispatchOnInit(TextToSpeech.java:701)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.speech.tts.TextToSpeech.access$1400(TextToSpeech.java:58)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask.onPostExecute(TextToSpeech.java:1509)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.speech.tts.TextToSpeech$Connection$SetupConnectionAsyncTask.onPostExecute(TextToSpeech.java:1471)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.os.AsyncTask.finish(AsyncTask.java:632)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.os.Handler.dispatchMessage(Handler.java:102)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.os.Looper.loop(Looper.java:136)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at android.app.ActivityThread.main(ActivityThread.java:5017)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at java.lang.reflect.Method.invokeNative(Native Method)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at java.lang.reflect.Method.invoke(Method.java:515)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
  03-10 11:11:35.934: E/AndroidRuntime(10608):    at dalvik.system.NativeStart.main(Native Method)
  03-10 11:11:35.944: W/ActivityManager(598):   Force finishing activity com.android.settings/.SubSettings
  03-10 11:11:35.944: W/ActivityManager(598):   Force finishing activity com.android.settings/.SubSettings
  03-10 11:11:36.445: W/ActivityManager(598): Activity pause timeout for ActivityRecord{432ad308 u0 com.android.settings/.SubSettings t218 f}
  </code></pre>