android10 添加默认输入法,修改权限(包括其他app的权限)


前言

提示:这里可以添加本文要记录的大概内容:
安卓aosp默认只有英文输入,不同的平台,有些可能不一样,我这个是基于mtk的


提示:以下是本篇文章正文内容,下面案例可供参考

一、添加MK编译脚本

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := SogouInput
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
#LOCAL_PRIVILEGED_MODULE := true
LOCAL_CERTIFICATE := PRESIGNED
LOCAL_PREBUILT_JNI_LIBS := \
       @lib/armeabi/libsogouime.so

include $(BUILD_PREBUILT)

LOCAL_PRIVILEGED_MODULE 是放在priv-app下面;
重点 LOCAL_CERTIFICATE 这里要用自己app的签名,不要用平台签名
在项目对应的device.mk 中添加要编译的输入法

二、修改系统设置

1.修改SettingsProvider

开机启动的时候会读取设置的
代码如下(示例):

diff --git a/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml b/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
index 53868072d1..bb67d247e4 100755
--- a/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
+++ b/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml
@@ -54,6 +54,10 @@
     <bool name="def_backup_enabled">false</bool>
     <string name="def_backup_transport" translatable="false">com.android.localtransport/.LocalTransport</string>
 
+    <string name="default_input_method" translatable="false">com.sohu.inputmethod.sogou.tv/.SogouIME</string>
+    <string name="enabled_input_methods" translatable="false">com.sohu.inputmethod.sogou.tv/.SogouIME</string>
+ 
+
     <!-- Default value for whether or not to pulse the notification LED when there is a
          pending notification -->
     <bool name="def_notification_pulse">true</bool>
diff --git a/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index ea92e2b776..e9d34d2ca1 100644
--- a/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/alps/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2406,6 +2406,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
                     com.android.internal.R.string.config_dreamsDefaultComponent);
             loadStringSetting(stmt, Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT,
                     com.android.internal.R.string.config_dreamsDefaultComponent);
+                                       
+                       loadStringSetting(stmt, Settings.Secure.DEFAULT_INPUT_METHOD,
+                    R.string.default_input_method);            
+                       
+                       loadStringSetting(stmt, Settings.Secure.ENABLED_INPUT_METHODS,
+                    R.string.enabled_input_methods);                           
+                                       

这里又有点差别了,去inputmanagerservice里面找一找Settings.Secure.DEFAULT_INPUT_METHOD对应的字符串是哪个,两个都要加上,Settings.Secure.ENABLED_INPUT_METHODS表示开机输入法

2.修改系统默认权限

没有这个的话, 开机会谈赋予权限的对话框,这里,又两种方式,
第一,在MK文件中去掉LOCAL_PRIVILEGED_MODULE=true, 即放在system/app下面,然后修改系统代码
代码如下(示例):

diff --git a/alps/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/alps/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 3d5d73a2ba..cbf7b82372 100644
--- a/alps/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/alps/frameworks/base/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -1123,6 +1123,8 @@ public class PermissionManagerService {
                     } else {
                         // For modern apps keep runtime permissions unchanged.
                         grant = GRANT_RUNTIME;
                     }
+                                               if(pkg.packageName.contains("com.sohu.inputmethod.sogou.tv"))
+                                                       grant = GRANT_INSTALL;
                 } else if (bp.isSignature()) {
                     // For all apps signature permissions are install time ones.
@@ -1130,6 +1132,8 @@ public class PermissionManagerService {
                     if (allowedSig) {
                         grant = GRANT_INSTALL;
                     }
+                                       if(pkg.packageName.contains("com.sohu.inputmethod.sogou.tv"))
+                                                       grant = GRANT_INSTALL;
                 }
 
                 if (DEBUG_PERMISSIONS) {
@@ -1148,6 +1152,9 @@ public class PermissionManagerService {
                             // updating the platform).
                             if (!isNewPlatformPermissionForPackage(perm, pkg)) {
                                 grant = GRANT_DENIED;
+                                                               
+                                                               if(pkg.packageName.contains("com.sohu.inputmethod.sogou.tv"))
+                                                                       grant = GRANT_INSTALL;
                             }
                         }
                     }

同理,其他第三方app也能在这里修改

第二,在MK文件中加上LOCAL_PRIVILEGED_MODULE=true, 即放在system/priv-app下面,然后再对应
frameworks\base\data\etc\privapp-permissions-platform.xml中添加权限,如

<privapp-permissions package="com.xxx.xxxx">
        <permission name="android.permission.REBOOT"/>
        <permission name="android.permission.RECOVERY"/>
        <permission name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <permission name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
        <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
        <permission name="android.permission.RECEIVE_BOOT_COMPLETED"/>
 </privapp-permissions>

总结

以上就是添加第三方输入法的方式, 同理,添加其他第三方app也是一样的,权限问题参考第二步

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuyewen288

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值