如何在Android中启动我的APP的辅助功能设置页面?

Kal*_* Lo 19 settings android accessibility

我正在开发一个Android基于Accessibility功能的APP .因为它无法以编程方式Enable/Disable Accessibility在Android中提供服务(请参阅如何以编程方式启用/禁用Android中的辅助功能服务),因此我Accessibility Settings通过以下代码引导用户访问Page(图1):

public static boolean gotoAccessibilitySettings(Context context) {
    Intent settingsIntent = new Intent(
            Settings.ACTION_ACCESSIBILITY_SETTINGS);
    if (!(context instanceof Activity)) {
        settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    }
    boolean isOk = true;
    try {
        context.startActivity(settingsIntent);
    } catch (ActivityNotFoundException e) {
        isOk = false;
    }
    return isOk;
}
Run Code Online (Sandbox Code Playgroud)

然后用户需要找到我的APP的子设置标签,点击它,现在Accessibility Settings我的APP显示页面(图2).

我怀疑,如果有任何办法直接启动我的APP的Accessibility Settings页面(图2)?

Tim*_*eld 16

您可以使用以下Intent手动打开辅助功能设置(何时导入android.content.Intentandroid.app.Intent已导入):

Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看以下资源:

  • 谢谢你的回答,@ timgws.但我的问题是直接打开我自己的应用程序的可访问性设置,而不是可访问性设置的主页:( (9认同)

小智 0

也许下面的代码可以帮助你:

Intent intent = new Intent();
        intent.setClassName("com.android.settings",
                "com.android.settings.Settings");
        intent.setAction(Intent.ACTION_MAIN);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                | Intent.FLAG_ACTIVITY_CLEAR_TASK
                | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT,
                "the fragment which you want show");
        intent.putExtra(PreferenceActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS,
                extras);
       startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

或者您可以搜索关键词“片段注入”了解更多信息;查看此链接,它对您的情况有用:

  • 根据该链接,此方法不再有效,因为该漏洞已在 Android 4.4 Kitkat 中修复 (3认同)