admin管理员组

文章数量:1565292

基于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);
+          }
+

 

本文标签: 输入法权限