OSDN Git Service

Fix NPE when press ttsEngines settings icon
authortiansiming <tiansiming@xiaomi.com>
Wed, 6 Dec 2017 13:29:15 +0000 (21:29 +0800)
committertiansiming <tiansiming@xiaomi.com>
Thu, 7 Dec 2017 02:08:34 +0000 (10:08 +0800)
settingsIntent is obtained by method getSettingsIntent in
TtsEngines.java, and it has the chance to return null directly in
which case will lead to NPE crash when we startActivity in
TextToSpeechSettings.java with a null intent.
So, a judgement here makes sense.

Bug:https://issuetracker.google.com/issues/70266990
Test:
1) Install the apk "partner-BaiduSpeechService.apk" offered in the Bug link above.
2) Go to Settings -> Languages & input -> Advance -> Text-to-speech output
3) Choose "Duer voice engine 3.0" as the preferred engine
4) Press the settings icon in the right

Change-Id: I497a745ce62989f3ff1aee661648e90af25fb99e
Signed-off-by: tiansiming <tiansiming@xiaomi.com>
src/com/android/settings/tts/TextToSpeechSettings.java

index e8823a6..c566967 100644 (file)
@@ -777,7 +777,11 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment
         if (KEY_TTS_ENGINE_PREFERENCE.equals(p.getKey())) {
             EngineInfo info = mEnginesHelper.getEngineInfo(mCurrentEngine);
             final Intent settingsIntent = mEnginesHelper.getSettingsIntent(info.name);
-            startActivity(settingsIntent);
+            if (settingsIntent != null) {
+                startActivity(settingsIntent);
+            } else {
+                Log.e(TAG, "settingsIntent is null");
+            }
         }
     }