基於rk3399 9.0版本代碼,在系統中預置百度輸入法並授予其所有權限
和之前的一篇文章設置方法有所不同 之前的文章 點擊這裏
添加輸入法
在framework/base/packages/SettingsProvider/res/values/defaults.xml 中
寫入一下代碼 第一個enabled_input_methods 是可以添加多個輸入法的,我這裏一個是原生的輸入法和百度輸入法
格式像這樣 > com.android.inputmethod.latin/.LatinIME:com.baidu.input/.ImeService 中間是通過 :分割的
第二句是配置默認的輸入法,這裏既是百度輸入法
<string name="enabled_input_methods" translatable="false">com.android.inputmethod.latin/.LatinIME:com.baidu.input/.ImeService</string>
<string name="config_default_input_method" translatable="false">com.baidu.input/.ImeService</string>
然後在 framework/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java中
添加下面兩句 ,這裏因爲是Settings.Secure 所以要放到 private void loadSecureSettings(SQLiteDatabase db) 方法中
loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS, R.string.enabled_input_methods);
loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD, R.string.config_default_input_method);
配置權限
9.0和之前的7.1 8.0 有所不同,它這裏將權限單獨放在PM的permission目錄下
在framework/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java的
grantDefaultSystemHandlerPermissions(int userId)方法中添加百度輸入法的所有權限
+ //BAIDU
+ PackageParser.Package BAIDU = getSystemPackage("com.baidu.input");
+ if(BAIDU != null && doesPackageSupportRuntimePermissions(BAIDU)){
+ grantRuntimePermissions(BAIDU, MICROPHONE_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, STORAGE_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, CONTACTS_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, LOCATION_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, CAMERA_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, PHONE_PERMISSIONS, userId);
+ grantRuntimePermissions(BAIDU, CALENDAR_PERMISSIONS, userId);
+ }
+