Android 判断无障碍服务权限是否已经打开

(Android无障碍服务开发QQ群:752296312) 
本文以下内容转摘自:https://blog.youkuaiyun.com/liuhongshuo2012/article/details/50751076
1、判断无障碍服务是否已经打开的方法:
private boolean isAccessibilitySettingsOn(Context mContext) {
int accessibilityEnabled = 0;
final String service = getPackageName() + "/" + AutoFire.class.getCanonicalName();
try {
accessibilityEnabled = Settings.Secure.getInt(
mContext.getApplicationContext().getContentResolver(),
android.provider.Settings.Secure.ACCESSIBILITY_ENABLED);
// Log.v(TAG, "accessibilityEnabled = " + accessibilityEnabled);
} catch (Settings.SettingNotFoundException e) {
// Log.e(TAG, "Error finding setting, default accessibility to not found: "
// + e.getMessage());
}
TextUtils.SimpleStringSplitter mStringColonSplitter = new TextUtils.SimpleStringSplitter(':');

if (accessibilityEnabled == 1) {
// Log.v(TAG, "***ACCESSIBILITY IS ENABLED*** -----------------");
String settingValue = Settings.Secure.getString(
mContext.getApplicationContext().getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
if (settingValue != null) {
mStringColonSplitter.setString(settingValue);
while (mStringColonSplitter.hasNext()) {
String accessibilityService = mStringColonSplitter.next();

// Log.v(TAG, "-------------- > accessibilityService :: " + accessibilityService + " " + service);
if (accessibilityService.equalsIgnoreCase(service)) {
// Log.v(TAG, "We've found the correct setting - accessibility is switched on!");
return true;
}
}
}
} else {
// Log.v(TAG, "***ACCESSIBILITY IS DISABLED***");
}

return false;
}

2、然后在onCreate()方法中:
//判断无障碍服务是否已经打开,没打开则进入无障碍设置界面
if(!isAccessibilitySettingsOn(this)) {
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
this.startActivity(intent);
}
 

Android判断无障碍权限打开并启动 `MyAccessibilityService`,可以通过以下步骤实现。 首先,判断无障碍服务是否整体开启,可以使用 `AccessibilityManager` 类的 `isEnabled()` 方法: ```java import android.content.Context; import android.view.accessibility.AccessibilityManager; public class AccessibilityUtils { public static boolean isAccessibilityEnabled(Context context) { AccessibilityManager accessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); return accessibilityManager.isEnabled(); } } ``` 然后,判断 `MyAccessibilityService` 是否已经启用,可通过 `Settings.Secure` 类读取系统设置中已启用的服务列表来检查: ```java import android.content.Context; import android.provider.Settings; import android.text.TextUtils; public class AccessibilityUtils { public static boolean isMyAccessibilityServiceEnabled(Context context) { int accessibilityEnabled = 0; try { accessibilityEnabled = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED); } catch (Settings.SettingNotFoundException e) { e.printStackTrace(); } TextUtils.SimpleStringSplitter colonSplitter = new TextUtils.SimpleStringSplitter(':'); if (accessibilityEnabled == 1) { String settingValue = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); if (settingValue != null) { colonSplitter.setString(settingValue); while (colonSplitter.hasNext()) { String accessibilityService = colonSplitter.next(); String serviceName = context.getPackageName() + "/" + "com.example.MyAccessibilityService"; // 替换为实际的服务类名 if (accessibilityService.equalsIgnoreCase(serviceName)) { return true; } } } } return false; } } ``` 使用示例: ```java boolean isAccessibilityOn = AccessibilityUtils.isAccessibilityEnabled(this); boolean isMyServiceEnabled = AccessibilityUtils.isMyAccessibilityServiceEnabled(this); if (isAccessibilityOn && isMyServiceEnabled) { // 无障碍权限打开且 MyAccessibilityService 已启动 } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值