因项目需求需要在首次开机的时候安装一个输入法然后并把它设置为默认输入法
本次主要讲的是在安装输入法之后如何设置输入法为默认输入法:
1、首先安装apk是需要时间的,我们要了解什么时候输入法是安装好的。
我们应用在安装成功之后系统会发送一个广播:android.intent.action.PACKAGE_ADDED
那么这样我们就可以写一个广播接收器来接收这个广播,然后通过intent得到被安装应用的包名。
下面是清单文件中的写法
<receiver android:name=".PackageAddedReceive"> <intent-filter android:priority="1001"> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package" /> </intent-filter> </receiver>
2、接收到广播之后接下来就是如何设置默认输入法了
private String COM_FYNSYSTEMS_FYNGEEZ = "com.fynsystems.fyngeez"; private String COM_FYNSYSTEMS_FYNGEEA_SOFTKEYBOARD = "com.fynsystems.fyngeez/.SoftKeyboard";
@Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) { String packageName = intent.getData().getSchemeSpecificPart(); if (COM_FYNSYSTEMS_FYNGEEZ.equals(packageName)) { setInputMethod(context, COM_FYNSYSTEMS_FYNGEEA_SOFTKEYBOARD); } } } private void setInputMethod(Context context, String str) { String enableInput = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS); if (!TextUtils.isEmpty(enableInput) && !enableInput.contains(str)) { Settings.Secure.putString(context.getContentResolver(), Settings.Secure.ENABLED_INPUT_METHODS, enableInput + ":" + str); } Settings.Secure.putString(context.getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD, str); Toast.makeText(context,COM_FYNSYSTEMS_FYNGEEA_SOFTKEYBOARD,Toast.LENGTH_LONG).show(); }
3、设置输入法分为了两步:一步是设置输入法可用,二步是设置输入法为默认输入法,在之前的策略是卸载策略的时候直接通过设置默认输入法的方式也是可以成功的,在策略修改为项目需要才安装应用之后就分为了两步执行。