我怎样才能在 Android 应用程序中启动可访问性设置页面?

33

我正在开发一个基于 Accessibility 功能的 Android 应用。由于无法在 Android 中以编程方式 启用/禁用 Accessibility 服务(请参见如何在 Android 中以编程方式启用/禁用 Accessibility 服务),因此我通过以下代码引导用户进入 Accessibility Settings 页面(图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;
}

然后用户需要找到我的应用程序的子设置标签,点击它,现在显示我的应用程序的 辅助功能设置 页面(图片2)。

我怀疑是否有任何方法可以直接启动我的应用程序的 辅助功能设置 页面(图片2)?


2
你找到解决方法了吗?我为此疯狂了。 - 4face
@kalok 你有没有找到解决方法? - Vishal Nagpure
大家好,有人找到了这个解决方案吗?我也遇到了同样的问题。 - Priyanka C
3个回答

26

19
感谢你的回答,@timgws。但是我的问题是直接打开我的应用程序的辅助功能设置,而不是打开 辅助功能设置主页 :( - Kalok Lo
最终我这样做了。在找到更好的方法进入页面之前,我只会告诉用户点击我的应用程序并在设置中启用服务。 - Thor Lancaster

4

试试这个:

Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

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);

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

@money zhang 在“你想要显示的片段”中,我应该输入什么? 我想输入自己的可访问性服务设置。 - Didi78
我尝试使用我的应用程序名称、包名、服务类名等,而不是“您想要显示的片段”。请告诉我应该输入什么? - David
3
根据链接显示,由于安卓4.4 Kitkat已经修补了这个漏洞,因此这种方法不再可行。 - BamsBamx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接