From b65c4c3e254077a11e2b4e84039ee59271c20cee Mon Sep 17 00:00:00 2001 From: tiansiming Date: Wed, 6 Dec 2017 21:29:15 +0800 Subject: [PATCH] Fix NPE when press ttsEngines settings icon 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 --- src/com/android/settings/tts/TextToSpeechSettings.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java index e8823a6388e..c5669676371 100644 --- a/src/com/android/settings/tts/TextToSpeechSettings.java +++ b/src/com/android/settings/tts/TextToSpeechSettings.java @@ -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"); + } } }