2010-04-07 10 views
18

Ich weiß, dass es möglich ist, mehrere Sprachen in einer einzigen Anwendung über die res/string und abhängig von Locale. Hier ist ein Fall (ANDROID) controling the user languageÄndern Sie die Spracheinstellungen (Gebietsschema) für das Gerät

Jetzt, wie kann ich die Sprache im Telefon ändern? Wie ich von Menü täte> Einstellungen> Sprache & Tastatur> Sprache wählen> Sprachen

Gibt es einen echten Code auf diese Einstellungen zugreifen? Oder sollte ich Absicht für eine Verknüpfung zu den Spracheinstellungen erstellen. Bitte schreiben einige Code

Edit: Mit Locale-Klasse developer.android.com/intl/fr/reference/java/util/Locale.html

Der Konstruktor ist mindestens Locale (String Sprache) Die Eingabe ist Sprache. Wie können Sie die aktuelle auf dem Gerät verwendete Sprache abrufen?

Antwort

40

Nicht sicher es direkt aus der App Einstellung, aber wenn Sie es dem Benutzer zu senden, es selbst zu ändern, versuchen Sie dies:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.setClassName("com.android.settings", "com.android.settings.LanguageSettings");    
startActivity(intent); 
+0

Hallo Jim, vielen Dank. Nur eine weitere Frage, woher wussten Sie über den Paketnamen und den Klassennamen für Einstellungen? –

+5

Was ich getan habe, ist, mein Telefon zu verwenden, während ich an meinem PC an USB angeschlossen bin, und den Logcat-Ausgang ansehe. Jede begonnene Intent wird in der Ausgabe protokolliert. Die Zeile lese I/ActivityManager (1018): Startaktivität: Intent {act = android.intent.action.MAINcmp = com.android.settings/.LanguageSettings} Ich ging auf eine Google-Suche und suchte nach "LanguageSettings Android Absicht "und fand ein Beispiel dafür, dass jemand genau das tut. Ich habe es selbst getestet und den Code für einen Ausschnitt hier vereinfacht. –

+0

Ich habe eine andere Antwort auf meine Frage gefunden. Es gibt ein Open-Source-Code-Projekt http://code.google.com/p/languagepickervidget/ Es erstellt eine ListActivity zum Anzeigen und Auswählen der Sprachen. Jim, Ihre Lösung ist viel einfacher und genau das, was ich brauchte. Es ist ein kurzer Schritt zu den Einstellungen. Unmittelbar nach Ihrer Veröffentlichung habe ich eine App namens "raygional" auf den Markt gebracht. Wenn ich könnte (ich habe nur 6 Punkte), würde ich deine Antwort nützlich machen. Es gibt eine andere Möglichkeit, die Prozesse und Absichten zu sehen. Gehen Sie im Emulator zu Menü> Entwicklungstools> Entwicklungseinstellungen> und klicken Sie auf Laufende Prozesse anzeigen. –

6

fand ich eine andere Antwort auf meine eigene Frage. Es gibt ein Open-Source-Code-Projekt code.google.com/p/languagepickerwidget Es erstellt eine ListActivity zum Anzeigen und Auswählen der Sprachen.

Jim, Ihre Lösung ist viel einfacher und genau das, was ich brauchte. Es ist ein kurzer Schritt zu den Einstellungen. Unmittelbar nach Ihrer Veröffentlichung habe ich eine App namens "raygional" auf den Markt gebracht. Wenn ich könnte (ich habe nur 6 Punkte), würde ich deine Antwort nützlich machen.

Es gibt eine andere Möglichkeit, die Prozesse und Absichten zu sehen. Auf dem Emulator Menü> Dev Tools> Einstellungen für die Entwicklung gehen> und klicken Sie auf Zeige laufende Prozesse

+0

Gibt es ein anderes ähnliches Projekt, das zeigt, wie man nur das Gebietsschema des Betriebssystems ändert, aber mit einer Apache-Lizenz oder etwas Ähnlichem? –

1

Um auf Jims Antwort zu erweitern, wenn Sie die Absicht ändern:

intent.setClassName("com.android.settings", "com.android.settings.LocalePicker"); 

fällt es dem Benutzer weg direkt in die Sprache Auswahlliste und sobald eine Sprache ausgewählt ist, wird es zu Ihrer Anwendung zurückkehren.

Es entfernt einen Klick, lässt den Benutzer nicht darüber nachdenken, welche der drei Optionen (Sprache, Wörterbuch und Tastatur) ausgewählt wurde und kehrt sofort nach der Auswahl zu Ihrer App zurück.

+0

hat auf einem Samsung Galaxy Tab 2 nicht funktioniert (verursacht ActivityNotFoundException: Die explizite Aktivitätsklasse konnte nicht gefunden werden). Gibt es vielleicht eine aktualisierte Absicht? – Jane

+0

dies funktioniert nicht auf Samsung Galaxy s2 entweder – dumazy

+0

dies funktioniert nicht auf Android 4.4.2 –

11

Es gibt eine andere Art und Weise die Systemeinstellungen zu öffnen, um die Sprache zu ändern: hier

Sie können ein genaues Beispiel für diesen Anwendungsfall finden

Intent i = new Intent(android.provider.Settings.ACTION_LOCALE_SETTINGS); 
startActivity(i); 

Es zeigt nur die Liste der Sprachen, und wenn Sie eines auswählen - es ändert die Sprache auf dem Gerät.

+1

Der Nachteil bei diesem Ansatz ist, dass, wenn der Benutzer das Symbol oben links (mit dem "<" neben ihm) drückt, es geht zurück zum Bildschirm "Sprache & Eingabe". – CJBS