1、获取系统默认语言的方法
private String getDefaultInputMethodPkgName(Context context) {
String mDefaultInputMethodPkg = null;
String mDefaultInputMethodCls = Settings.Secure.getString(
context.getContentResolver(),
Settings.Secure.DEFAULT_INPUT_METHOD);
//输入法类名信息
Log.d("aa", "mDefaultInputMethodCls=" + mDefaultInputMethodCls);
if (!TextUtils.isEmpty(mDefaultInputMethodCls)) {
//输入法包名
mDefaultInputMethodPkg = mDefaultInputMethodCls.split("/")[0];
Log.d("aa", "mDefaultInputMethodPkg=" + mDefaultInputMethodPkg);
}
return mDefaultInputMethodPkg;
}
2、获取系统默认的输入法列表
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
List<InputMethodInfo> methodList = imm.getInputMethodList(); //这个方法无论你有多少输入法都会全部拿出来
imm.getEnabledInputMethodList();//这个方法只会获取可以使用的输入列表,如果在设置里面选择不可以使用,则就获取不到
3、设置
通过列表获取id
String id1 = "";
id1 = methodList.get(i).getId();
Settings.Secure.putString(getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD,id1);//通过这个方法设置
4、需要注意的是,我们的apk需要获得系统权限
在清单文件中需要
android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>