【发布时间】:2023-04-07 14:21:02
【问题描述】:
我知道以编程方式为应用启用辅助功能服务是不可能的,因此我想将用户引导至此屏幕:
System settings --> Accessibility --> app name --> enable/disable screen。
这可能吗?
【问题讨论】:
标签: android accessibility
我知道以编程方式为应用启用辅助功能服务是不可能的,因此我想将用户引导至此屏幕:
System settings --> Accessibility --> app name --> enable/disable screen。
这可能吗?
【问题讨论】:
标签: android accessibility
您可以将它们带到大多数设备上的辅助功能屏幕using ACTION_ACCESSIBILITY_SETTINGS。然而:
这可能不适用于所有设备,因此如果您收到 ActivityNotFoundException
没有办法让它们直接进入任何给定的应用程序,更不用说启用/禁用屏幕了
【讨论】:
您至少可以让它到达应用程序,使应用程序项闪烁。它应该适用于大多数设备,或者至少适用于 Pixel 设备:
fun <T : AccessibilityService> getRequestAccessibilityPermissionIntents(context: Context, accessibilityService: Class<T>): Array<Intent> {
var intent = Intent("com.samsung.accessibility.installed_service")
if (intent.resolveActivity(context.packageManager) == null) {
intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
}
val extraFragmentArgKey = ":settings:fragment_args_key"
val extraShowFragmentArguments = ":settings:show_fragment_args"
val bundle = Bundle()
val showArgs = "${context.packageName}/${accessibilityService.canonicalName!!}"
bundle.putString(extraFragmentArgKey, showArgs)
intent.putExtra(extraFragmentArgKey, showArgs)
intent.putExtra(extraShowFragmentArguments, bundle)
return arrayOf(intent, Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY))
}
用法:
private fun requestAccessibilityPermission() {
getRequestAccessibilityPermissionIntents(this, MyAccessibilityService::class.java).forEach { intent ->
try {
startActivity(intent)
return
} catch (e: Exception) {
}
}
//TODO do something here in case it failed
}
【讨论】: