1 votos

NullPointerExcepción al abrir la configuración de Idioma y Entrada

Tengo un Lenovo P770 rooteado, donde desinstalé varias aplicaciones de "sistema", incluyendo el teclado de serie, TouchPal. Después de un restablecimiento de fábrica instalé AnySoftKeyboard con adb ( adb shell ime ...), y ahora funciona. Sin embargo, ya no puedo acceder a la configuración de Idioma e introducción de datos, ya que en el momento en que toco el elemento de menú recibo el mensaje "Lamentablemente, la configuración se ha detenido". Aquí está el rastro de la pila de adb logcat :

W/dalvikvm( 8972): threadid=1: thread exiting with uncaught exception (group=0x40db2908)
E/AndroidRuntime( 8972): FATAL EXCEPTION: main
E/AndroidRuntime( 8972): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.settings/com.android.settings.SubSettings}: java.lang.NullPointerException
E/AndroidRuntime( 8972):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184)
E/AndroidRuntime( 8972):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2211)
E/AndroidRuntime( 8972):        at android.app.ActivityThread.access$600(ActivityThread.java:149)
E/AndroidRuntime( 8972):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1300)
E/AndroidRuntime( 8972):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 8972):        at android.os.Looper.loop(Looper.java:153)
E/AndroidRuntime( 8972):        at android.app.ActivityThread.main(ActivityThread.java:5108)
E/AndroidRuntime( 8972):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 8972):        at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 8972):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
E/AndroidRuntime( 8972):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751)
E/AndroidRuntime( 8972):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 8972): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 8972):        at android.preference.PreferenceGroup.removePreferenceInt(PreferenceGroup.java:181)
E/AndroidRuntime( 8972):        at android.preference.PreferenceGroup.removePreference(PreferenceGroup.java:174)
E/AndroidRuntime( 8972):        at com.android.settings.VoiceInputOutputSettings.populateOrRemoveTtsPrefs(VoiceInputOutputSettings.java:144)
E/AndroidRuntime( 8972):        at com.android.settings.VoiceInputOutputSettings.populateOrRemovePreferences(VoiceInputOutputSettings.java:94)
E/AndroidRuntime( 8972):        at com.android.settings.VoiceInputOutputSettings.onCreate(VoiceInputOutputSettings.java:89)
E/AndroidRuntime( 8972):        at com.android.settings.inputmethod.InputMethodAndLanguageSettings.onCreate(InputMethodAndLanguageSettings.java:121)
E/AndroidRuntime( 8972):        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:796)
E/AndroidRuntime( 8972):        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
E/AndroidRuntime( 8972):        at android.app.BackStackRecord.run(BackStackRecord.java:635)
E/AndroidRuntime( 8972):        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
E/AndroidRuntime( 8972):        at android.app.Activity.performStart(Activity.java:5030)
E/AndroidRuntime( 8972):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2157)
E/AndroidRuntime( 8972):        ... 11 more
W/ActivityManager(  351):   Force finishing activity com.android.settings/.SubSettings
W/ActivityManager(  351):   Force finishing activity com.android.settings/.Settings

Ya que el rastro de la pila menciona VoiceInputOutputSettings Intenté instalar la aplicación de Google (por lo que entiendo, proporciona capacidades de reconocimiento de voz), pero eso no cambió nada. También he intentado instalar TouchPal del mercado, sin ningún resultado.

Aquí están las entradas de settings.db que parecen relevantes:

_id,name,value
72,selected_spell_checker,com.google.android.inputmethod.latin/com.android.inputmethod.latin.spellcheck.AndroidSpellCheckerService
73,selected_spell_checker_subtype,0
94,input_methods_subtype_history,com.google.android.inputmethod.latin/com.android.inputmethod.latin.LatinIME;834845621:com.menny.android.anysoftkeyboard/.SoftKeyboard;-1
95,selected_input_method_subtype,-1
96,default_input_method,com.menny.android.anysoftkeyboard/.SoftKeyboard
97,enabled_input_methods,com.menny.android.anysoftkeyboard/.SoftKeyboard

¿Cómo puedo arreglar este accidente?

0voto

Pastafarianist Puntos 14

Arreglado por la instalación Google TTS .


Esto podría determinarse a partir del rastro de la pila y el ajustes código fuente de la aplicación :

public void onCreate() {
    mParent = mFragment.getPreferenceScreen();
    mVoiceCategory = (PreferenceCategory) mParent.findPreference(KEY_VOICE_CATEGORY);
    mTtsSettingsPref = mVoiceCategory.findPreference(KEY_TTS_SETTINGS);

    populateOrRemovePreferences();
}

private void populateOrRemovePreferences() {
    boolean hasTtsPrefs = populateOrRemoveTtsPrefs();
    if (!hasTtsPrefs) {
        // There were no TTS settings and no recognizer settings,
        // so it should be safe to hide the preference category
        // entirely.
        mFragment.getPreferenceScreen().removePreference(mVoiceCategory);
    }
}

private boolean populateOrRemoveTtsPrefs() {
    if (mTtsEngines.getEngines().isEmpty()) {
        mVoiceCategory.removePreference(mTtsSettingsPref);
        return false;
    }

    return true;
}

El removePreference La llamada se estaba colapsando. Aparentemente, también había desinstalado Google TTS, que estaba incluido en esta versión de Android.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X