Android: cambia la programación del sistema del dispositivo mediante programación

Quiero cambiar la configuración regional del dispositivo (no sólo la configuración regional de la aplicación) de mi aplicación, como el usuario puede hacer en Configuración -> Idioma y teclado -> Idioma.

¿Puede alguien explicar por favor cómo hacerlo? He estado buscando durante horas y no puedo encontrar una manera.

Esta aplicación desea que desee https://play.google.com/store/apps/details?id=org.gnvo.langpicker&hl=es

Aquí está su código fuente https://code.google.com/p/languagepickerwidget/

Aquí está su lógica principal http://bin-liu.blogspot.in/2012/05/how-to-change-system-locale-calling.html

EDITAR

Después de 4.2 nuevo Jelly Bean, la definición de nivel de protección de CHANGE_CONFIGURATION se ha cambiado, por lo que la aplicación no funcionará por encima de 4.2, la solución es http://droider.eu/2013/07/22/morelocale-2-not-working-on -4-2-2-sin-su-o-pm /

Sí, puede cambiar la configuración regional del dispositivo para cualquier versión de Android asegúrese de que su aplicación es app.Heres del sistema el código para ayudarle a cabo.Por favor, clasificar mi respuesta si te gusta.

//getting the languages that are shown same as in our device settings String[] systemLocaleIetfLanguageTags = getAssets().getLocales(); Arrays.sort(systemLocaleIetfLanguageTags); this.locale_data = new ArrayList(); for (String ietfLanguageTag : systemLocaleIetfLanguageTags) { if (ietfLanguageTag != null && ietfLanguageTag.length() == 5) { this.locale_data.add(new Loc(ietfLanguageTag)); } } adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, android.R.id.text1, locale_data); // Assign adapter to ListView lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { int itemPosition = position; Loc loc = (Loc) ChangeLanguage.this.adapter.getItem(position); Toast.makeText(ChangeLanguage.this, "language activated successfully !!", 0).show(); ChangeLanguage.change_setting(loc.getLocale()); } }); } //to change the locale public static void change_setting(Locale loc) { try { Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); Object am = activityManagerNative.getMethod("getDefault", new Class[0]).invoke(activityManagerNative, new Object[0]); Object config = am.getClass().getMethod("getConfiguration", new Class[0]).invoke(am, new Object[0]); config.getClass().getDeclaredField("locale").set(config, loc); config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); am.getClass().getMethod("updateConfiguration", new Class[] { Configuration.class }).invoke(am, new Object[] { config }); } catch (Exception e) { e.printStackTrace(); } } 
  • Android Cómo instalar los locales instalados del sistema
  • Obtener la variante de la configuración regional para el chino simplificado
  • Cómo obtener el nombre checo del mes
  • Establecer la configuración regional mediante programación
  • Aplicación de Android con ActionBar NullPointerException con configuración regional no predeterminada
  • Android: ¿Cómo mantener la configuración local de la aplicación independiente de System Locale?
  • Android: Cómo obtener una cadena en una configuración específica SIN cambiar la configuración actual
  • Aplicación de varios idiomas androide?
  • Texto de Android a voz en diferentes idiomas
  • Android - El idioma de WebView cambia abruptamente en Android N
  • Localización de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.