2013-02-08 99 views
6

我开发了一个短信发送器应用程序,我想知道用户使用的语言。所以,当用户输入消息时,我怎么能知道他/她使用的语言?如何知道键盘语言? (en/fr)

+1

http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#getCurrentInputMethodSubtype%28%29 – hakiko 2013-02-08 14:56:36

回答

10

通过使用获得输入型经理:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 

那么,选择什么样的使用下一个方法,从它那里得到:

http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#getCurrentInputMethodSubtype%28%29

或: http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#getLastInputMethodSubtype()

在一起用以获得输入类型的语言环境:

http://developer.android.com/reference/android/view/inputmethod/InputMethodSubtype.html#getLocale()

+1

嗨,但这个解决方案在API 11中可用,我想用它来安卓2.3!如何在API 11之前使用您的想法获得较低版本。 – NrNazifi 2013-02-12 07:37:43

+0

好点。抱歉错过了。也许有可能从android代码读取,看看是否有办法克服它的旧版本。 – 2013-02-12 09:33:16

0

检索当前的键盘语言是不可能的。 Android不允许检索当前配置的语言,没有任何API。

4

可以通过先检测设备键盘的语言环境,然后从中获取Locale对象获取键盘语言。例如,

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
    InputMethodSubtype ims = imm.getCurrentInputMethodSubtype(); 
    String localeString = ims.getLocale(); 
    Locale locale = new Locale(localeString); 
    String currentLanguage = locale.getDisplayLanguage(); 

在这里,currentLanguage将给你的键盘语言。希望这可以帮助。

+0

当ims为空时我们该怎么办? – Patzu 2016-12-28 07:44:18