android8.0开机自动运行apk,RK3326 Android 8.1 为自己的APK的服务默认开启无障碍权限,不会有任何的弹窗...

首先致谢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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值