Cómo obtener la configuración regional del dispositivo después de cambiar la configuración regional de la aplicación

Estoy cambiando la configuración regional de la aplicación según la elección del usuario. Independiente de la configuración regional del dispositivo.

utilizando

public void setDefaultLocale(Context context, String locale) { Locale appLoc = new Locale(locale); Locale.setDefault(appLoc); Configuration appConfig = new Configuration(); appConfig.locale = appLoc; context.getResources().updateConfiguration(appConfig, context.getResources().getDisplayMetrics()); } 

Pero quiero saber cuál será la localización del dispositivo también.

Cuando estoy tratando de conseguir esto siempre tengo la configuración regional que he establecido en la aplicación.

Ex: el applictaion está en INGLÉS y el dispositivo está en CHINO . Siempre estoy recibiendo inglés .

Para obtener el uso de la configuración regional,

Opción 1.

 String locale = context.getResources().getConfiguration().locale.getCountry(); 

opcion 2.

 String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry(); 

Cualquier ayuda será muy apreciada!

Estoy absolutamente inseguro cómo es portable esto a los diversos dispositivos:

 try { Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"}); String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); exec.destroy(); Log.e("", "Device locale: "+locale); } catch (IOException e) { e.printStackTrace(); } 

Y si quieres la parte del país: persist.sys.country

Pregunté algo similar y encontré esta respuesta, lo siento si es tarde:

Para buscar la configuración regional del sistema:

 defaultLocale = Resources.getSystem().getConfiguration().locale; 

Obtiene la configuración regional del sistema, independientemente de la configuración regional predeterminada para la aplicación / actividad.

Para aquellos que están utilizando la solución de Daniel Fekete que es:

 Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"}); String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); exec.destroy(); 

¡Tenga en cuenta que la localidad podría estar VACÍA en la última versión de Android Api (+21)! En lugar de usar persist.sys.language use persist.sys.locale

 exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.locale"}); locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); exec.destroy(); 
  • Notificación si el usuario está cerca de la ubicación
  • ¿Cuál es la mejor práctica para externalizar la traducción de aplicaciones en Android?
  • Pregunta de localización de Android
  • Valores locales de chino-zh_CN dan un error en Eclipse
  • Recursos catalanes y vascos en Android
  • Obtener el idioma actual en el dispositivo
  • Habilitar a terceros independientes para localizar aplicaciones de Android; Datos de localización fuera del APK de la aplicación
  • Cómo obtener los idiomas disponibles (No todos, solo los idiomas disponibles en mi aplicación)
  • Evento OnKeyUp en el navegador de Android para idiomas no latinos
  • Establecer dinámicamente vínculos a texto en strings.xml
  • Aplicaciones en varios idiomas en Android Market: ¿capturas de pantalla para más de un idioma?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.