2013-01-18 15 views
9

Sto modificando le impostazioni locali dell'applicazione in base alla scelta dell'utente. Indipendente dalla locale del dispositivo.Come ottenere le impostazioni locali del dispositivo dopo aver modificato le impostazioni locali dell'applicazione

utilizzando

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()); 
    } 

Ma voglio sapere quale sarà il locale dispositivo anche.

Quando sto cercando di ottenere questo ottengo sempre le impostazioni internazionali che ho impostato per l'applicazione.

es: applictaion è in INGLESE e dispositivo è in CINESE. Ricevo sempre inglese.

per ottenere locale utilizzando,

opzione 1.

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

opzione 2.

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

qualsiasi aiuto sarà molto apprezzato !!!

+0

analogo: http://stackoverflow.com/questions/23348954/android-get-device-locale – trante

risposta

6

Sono assolutamente sicuro di come portatile è quello di diversi dispositivi:

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(); 
} 

E se si desidera che la parte Paese: persist.sys.country

+0

Grazie! Funziona per me! :) – AndroidDev

7

ho chiesto qualcosa di simile e ho trovato questa risposta, mi spiace se è in ritardo:

Per trovare l'uso locale del sistema:

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

I t ottiene le impostazioni internazionali del sistema, indipendentemente dalle impostazioni locali predefinite per l'app/attività.

+2

Questa dovrebbe essere la risposta accettata. – Pongpat

0

per coloro che utilizzano Daniel Fekete 's soluzione che è:

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

essere a conoscenza di tale impostazione potrebbe essere VUOTO sull'ultimo Api Android (21)! invece di utilizzare persist.sys.language uso persist.sys.locale

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