瑞芯微Rockchip开发者社区
直播中

刘勇

7年用户 1316经验值
私信 关注
[问答]

怎样做才能让RK3326 Android为自己的APK服务开启无障碍默认权限呢

怎样做才能让RK3326 Android为自己的APK服务开启无障碍默认权限呢?

回帖(1)

周静

2022-2-17 11:42:26
在能开机就运行的代码的地方加入这一块代码



// 这是获取服务列表的函数,被下面的函数调用
public Set getEnabledServices(Context context) {
        final String enabledServicesSetting = Settings.Secure.getString(
                context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);


        if (enabledServicesSetting == null) {
            return Collections.emptySet();
        }


        final Set 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;
    }


// 下面的代码须要保证开机就能运行,须要放到一个函数里面去
try{
        /* Get a list of all available accessibility services */
        Set enabledServices = getEnabledServices(context);


        /* If the obtained service collection is empty, create a new collection */
        if (enabledServices == (Set) Collections.emptySet()) {
                enabledServices = new HashSet();
        }


        // 将须要设置的服务到集合里
        ComponentName toggledService = ComponentName.unflattenFromString("包名/类名");//添加本身服务的包名和类名
        enabledServices.add(toggledService);


        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(context.getContentResolver(),
                        android.provider.Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, enabledServicesBuilder.toString());


        // Update accessibility enabled.
        android.provider.Settings.Secure.putInt(context.getContentResolver(),
        android.provider.Settings.Secure.ACCESSIBILITY_ENABLED, 1);   
} catch(Exception e) {};




涉及到的包名ide






import java.util.Set;
import java.util.Collections;
import android.text.TextUtils;
import java.util.HashSet;
举报

更多回帖

发帖
×
20
完善资料,
赚取积分