首先致谢lancelots:
因为自己不是科班,所以很多东西都来自于网友的博客,非常感谢网友的分享,和快速的回复。
在能开机就运行的代码的地方加入这一块代码
// 这是获取服务列表的函数,被下面的函数调用
public SetgetEnabledServices(Context context) {
final String enabledServicesSetting = Settings.Secure.getString(
context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
if (enabledServicesSetting == null) {
return Collections.emptySet();
}
final SetenabledServices = 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 */
SetenabledServices = 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) {};
涉及到的包名
import java.util.Set;
import java.util.Collections;
import android.text.TextUtils;
import java.util.HashSet;
参考
https://blog.csdn.net/lancelots/article/details/84066745#comments