Android设置输入法

前言

     在最近的一个项目中需要下载、安装Google输入法并将默认输入法设置为Google输入法。后台下载APP这个就不说了,然后需要静默安装,这个大家可以百度或者Google一下,下载完成自动安装!

第一步打开系统输入法激活页面

 

Intent intent = new Intent(Settings.ACTION_INPUT_METHOD_SETTINGS);
startActivity(intent);

 

第二步检测是否激活输入法

 

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
for(InputMethodInfo imi:imm.getEnabledInputMethodList()){    
       if(getPackageName().equals(imi.getPackageName())){      
           return true;   
        }
}

 

第三步检测默认输入法

        String defaultImme = Settings.Secure.getString(getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD);

        if(defaultImme!=null&&defaultImme.contains(getPackageName())){
            return true;
        }
        return false;

第四步打开默认输入法选择对话框

((InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE)).showInputMethodPicker();

 

问题:无法监听输入法是否激活

子类型如何影响输入
法子类型不会更改输入法服务的行为,因此输入法服务会根据Android框架向其报告的当前启用的子类型来更改其行为。输入法服务可以通过两种方式找出当前启用的子类型:

向输入法管理员询问当前的子类型
从onCurrentInputMethodSubtypeChanged(InputMethodSubtype newSubtype)方法接收回调
要求输入法管理器
输入法管理器是一种系统服务,因此您可以从Android上下文中获取它(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)。一旦你参考了输入法管理器,你可以使用final来询问当前的输入法子类型InputMethodSubtype currentSubtype = richImm.getCurrentInputMethodSubtype();。

Input Method Manager的完整文档可以在这里找到。

子类型更改的侦听器
该onCurrentInputMethodSubtypeChanged(InputMethodSubtype newSubtype)方法可以在输入法服务实现中被覆盖,以处理当前输入法子类型的更改。这可以在输入期间处理子类型的更改,但重要的是不要仅仅依靠此方法。

输入法服务(使用子类型)应始终在onStartInput()或期间检查当前子类型onStartInputView()。

可以通过第二步来得知输入法是否激 然后就是imp服务中的监听回调 无法拿到回调  

解决办法

在接收到IMP安装成功之后 跳转设置imp激活 不停的调用方法二来检测是否激活 激活就打开默认imp设置页面 循环检测是否设置成功 成功就回跳到app

你可能感兴趣的:(Android)