Android12 默认开启无障碍下的应用服务开关

发布于:2024-04-04 ⋅ 阅读:(251) ⋅ 点赞:(0)

需求:默认开启对应的无障碍服务开关,即开机自启打开,且重启不会关闭。因为 没接触过,以为修改很容易,但改了好几天都没改好,原本打算放弃的我,但始终坚持着修改,想尽一切办法,经过不断地尝试,终于不负有心人,解决了。

/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 【默认加载对应的无障碍服务,需添加完整】

存入数据库:DatabaseHelper.java

 loadSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,
                    1);
 loadSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        "包名/包名.服务名");

   private void loadSecureSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
            stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
                    + " VALUES(?,?);");

            // Don't do this.  The SystemServer will initialize ADB_ENABLED from a
            // persistent system property instead.
            //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0);
            //*/add,this effect useful
             loadSetting(stmt, Settings.Secure.ACCESSIBILITY_ENABLED,
                    1);
             loadSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        "com.xigu.uct.ui/com.xigu.uct.ui.service.PtytService");
              loadSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        "com.xigu.uct.ui/com.xigu.uct.ui.service.ForegroundService");
               loadSetting(stmt, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
                        "com.xigu.uct.ui/com.xigu.uct.ui.service.KeyMonitorService");
             //*/

/frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

 【开机启动相关无障碍服务】

//*/tyd,lxd,ad pkg
import java.util.Set;
import java.util.Collections;
import android.text.TextUtils;
import java.util.HashSet;
//*/

final void finishBooting() {

final void finishBooting() {   
  synchronized (this) {
            xxxxxxxxxxxx;
        }

        //*/add accessiblity
        try{
	        Set<ComponentName> enabledServices = getEnabledServices(mContext);
	        if (enabledServices == (Set<?>) Collections.emptySet()) {
		        enabledServices = new HashSet<ComponentName>();
	        }
	        //
	        ComponentName toggledService = ComponentName.unflattenFromString("com.xigu.uct.ui/com.xigu.uct.ui.service.PtytService");//
	        ComponentName toggledService2 = ComponentName.unflattenFromString("com.xigu.uct.ui/com.xigu.uct.ui.service.ForegroundService");//
	        ComponentName toggledService3 = ComponentName.unflattenFromString("com.xigu.uct.ui/com.xigu.uct.ui.service.KeyMonitorService");//
	        enabledServices.add(toggledService);
	        enabledServices.add(toggledService2);
	        enabledServices.add(toggledService3);

	        StringBuilder enabledServicesBuilder = new StringBuilder();    
	        for (ComponentName enabledService : enabledServices) {
		        enabledServicesBuilder.append(enabledService.flattenToString());
		        enabledServicesBuilder.append(':');
	        }

	        final int enabledServicesBuilderLength = enabledServicesBuilder.length();
	        if (enabledServicesBuilderLength > 0) {
		        enabledServicesBuilder.deleteCharAt(enabledServicesBuilderLength - 1);
	        }
	        android.provider.Settings.Secure.putString(mContext.getContentResolver(),
			        android.provider.Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, enabledServicesBuilder.toString());
	        // Update accessibility enabled.
	        android.provider.Settings.Secure.putInt(mContext.getContentResolver(),
	        android.provider.Settings.Secure.ACCESSIBILITY_ENABLED, 1);    
            } catch(Exception e) {};
         //*/
        // UART is on if init's console service is running, send a warning notification.
        showConsoleNotificationIfActive();

        t.traceEnd();
    }
    //*/add getEnabledServices method
     public Set<ComponentName> getEnabledServices(Context context) {
            final String enabledServicesSetting = Settings.Secure.getString(
                    context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
     
            if (enabledServicesSetting == null) {
                return Collections.emptySet();
            }
     
            final Set<ComponentName> enabledServices = new HashSet<>();
            final TextUtils.SimpleStringSplitter colonSplitter = new TextUtils.SimpleStringSplitter(':');
            colonSplitter.setString(enabledServicesSetting);
     
            while (colonSplitter.hasNext()) {
                final String componentNameString = colonSplitter.next();
                final ComponentName enabledService = ComponentName.unflattenFromString(
                        componentNameString);
                if (enabledService != null) {
                    enabledServices.add(enabledService);
                }
            }
            return enabledServices;
        }
      //*/
 


网站公告

今日签到

点亮在社区的每一天
去签到