1

Je œuvre une application qui utilise les paramètres de langue maternelle qui est accessible à partir de: Menu> Paramètres> Langue & clavier> Langue> Langueparamètres Android LocalePicker sur Honeycomb

Je peux aussi ouvrir la page Locale directement en utilisant une intention qui énumère les langues en utilisant le code suivant:

Intent languageIntent = new Intent(Intent.ACTION_MAIN); 
languageIntent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 
activity.startActivity(languageIntent); 

^- crédit de code: Change language settings (locale) for the device

Cela fonctionne très bien sur les versions bEFO re Honeycomb. Cependant, les paramètres de nid d'abeille a la petite zone de navigation vers la gauche, comme ceci:

Image

et quand j'exécute le code ci-dessus je reçois cette erreur:

Starting: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.LocalePicker } from pid 24294 
FATAL EXCEPTION: main 
android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.settings/com.android.settings.LocalePicker}; have you declared this activity in your AndroidManifest.xml? 

Toute idée pourquoi cette est passe? Si je change "com.android.settings.LocalePicker" en "com.android.settings.Settings" il ouvrira la page de paramètres à n'importe quel paramètre que vous avez sélectionné en dernier, mais si je tente de changer le nom de classe à quelque chose comme: "com .android.settings.Settings.LocalePicker "ça explose à nouveau. Voici un code modifié que j'utilise en tant que ce problème est résolu:

Intent languageIntent = new Intent(Intent.ACTION_MAIN); 
int currentApiVersion = android.os.Build.VERSION.SDK_INT; 
final int HONEYCOMB = 11; 
if (currentApiVersion < HONEYCOMB) // "HONEYCOMB" should be replaced with android.os.Build.VERSION_CODES.HONEYCOMB, but version code 'honeycomb' is not supported... 
{ 
    languageIntent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 
} 
else 
{ 
    languageIntent.setClassName("com.android.settings", "com.android.settings.Settings"); 
} 
activity.startActivityForResult(languageIntent, WtgActivity.LANGUAGE_CHANGE_REQUEST); 

Exécution de code qui fait quelque chose de différent basé sur le numéro de version est pas idéale, donc si quelqu'un sait comment résoudre ce problème, je vous serais reconnaissant.

Merci!

+0

En outre, une autre question (que je peux poster une nouvelle question) ne sait comment installer une nouvelle langue ou si elle fait partie du firmware et ne peut être modifié en piratant ou en utilisant un firmware modifié? – aveyD

Répondre

4

Essayez ceci:

Intent languageIntent = new Intent(Settings.ACTION_LOCALE_SETTINGS); 
startActivity(languageIntent); 
+0

Merci! Fonctionne très bien! – aveyD

Questions connexes