2011-07-06 66 views
1

我實現使用可從訪問的本地語言設置的應用程序: 菜單>設置>語言&鍵盤>選擇語言>區域設置Android設置LocalePicker在Honeycomb

我也可以直接打開區域設置頁面使用通過使用下面的代碼列出了語言的意圖:

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

^- 信用代碼:Change language settings (locale) for the device

這個版本上befo的偉大工程重新蜂窩。然而,對於蜂窩的設置有小導航區域到左側,像這樣:

Image

,當我執行上面的代碼中,我得到這個錯誤:

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? 

知道爲什麼這正在發生?如果我將「com.android.settings.LocalePicker」更改爲「com.android.settings.Settings」,它將打開設置頁面,以適應上次選擇的任何設置,但如果我嘗試將類名更改爲類似於:「com .android.settings.Settings.LocalePicker「它再次爆炸。下面是一些修改代碼,我使用,直到這個問題解決了:

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

運行的代碼,做一些不同的基礎上版本號不理想,因此,如果有人知道如何解決這個問題我將不勝感激。

謝謝!

+0

另外,一個單獨的問題(我可能會發佈一個新的問題)沒有人知道如何安裝一個新的語言,或者如果它是固件的一部分,只能改變通過黑客或使用修改的固件? – aveyD

回答

4

試試這個:

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

謝謝!很棒! – aveyD

相關問題