Android系统启动篇
4,《Android SystemServer进程启动流程》
Android系统开发准备篇
3,《Android Framework代码IDE加载和调试》
Android系统开发实践篇
4,《android单独编译framework模块并push》
Android系统开发核心知识储备篇
1,《Android编译系统-envsetup和lunch代码篇》
6,《Android中Activity、View和Window关系详解》
11,《android中AMS进程通知Zygote进程fork新进程的通信方式》
Android核心功能详解篇
2,《Android 手势导航(从下往上滑动进入多任务页面)》
3,《android手势分析(应用界面左往右边滑动退出应用)》
———————————————————————————————————————————
目录
一,背景
google自带的输入法LatinIME中文支持不够友好,需要替换默认输入法。设置分成两部分:
1,adb操作
2,代码设置
二,adb操作
2.1 查看系统默认输入法
$ adb shell ime list -s
获取信息如下;
2.2 查看系统默认输入法
$ adb shell settings get secure default_input_method
2.3 设置系统默认输入法
$ adb shell settings put secure default_input_method com.sohu.inputmethod.sogou/.SogouIME
三,代码设置
3.1 新增属性
文件路径:frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<!-- 设置默认输入法 -->
<string name="config_enabled_input_methods" translatable="false">com.sohu.inputmethod.sogou/.SogouIME:com.android.inputmethod.latin/.LatinIME</string>
<string name="config_default_input_method" translatable="false">com.sohu.inputmethod.sogou/.SogouIME</string>
<!-- 设置默认输入法 -->
3.2 加载新增属性
文件路径:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSecureSettings(SQLiteDatabase db) {
loadSecure35Settings(stmt);
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,R.string.config_enabled_input_methods);
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,R.string.config_default_input_method);
loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND,
R.bool.def_mount_play_notification_snd);
}
3.3 赋权限
文件路径:frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
private void grantDefaultSystemHandlerPermissions(PackageManagerWrapper pm, int userId){
// System Captions Service
String systemCaptionsServicePackageName =
mContext.getPackageManager().getSystemCaptionsServicePackageName();
if (!TextUtils.isEmpty(systemCaptionsServicePackageName)) {
grantPermissionsToSystemPackage(pm, systemCaptionsServicePackageName, userId,
MICROPHONE_PERMISSIONS);
}
//sogou ime
PackageInfo touchpal = pm.getPackageInfo("com.sohu.inputmethod.sogou");
if (touchpal != null && doesPackageSupportRuntimePermissions(touchpal)) {
grantPermissionsToPackage(pm,
touchpal, userId, false, true, true,
PHONE_PERMISSIONS, CONTACTS_PERMISSIONS, STORAGE_PERMISSIONS);
}
}
3.4 内置输入法
需内置sogou应用为系统应用,参考《android framework预制APK应用》.