如何在 Android 中启动我的 APP 的辅助功能设置页面?
Posted
技术标签:
【中文标题】如何在 Android 中启动我的 APP 的辅助功能设置页面?【英文标题】:How can I start the Accessibility Settings Page of my APP in Android? 【发布时间】:2015-06-04 16:49:42 【问题描述】:我正在开发一个基于Accessibility
功能的android
APP。由于它不能在 Android 中以编程方式 Enable/Disable Accessibility
服务(参见 How to Programmatically Enable/Disable Accessibility Service in Android),所以我通过下面的代码引导用户到 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;
然后用户需要找到我的APP的子设置标签,点击它,现在我的APP显示Accessibility Settings
页面(图2)。
我怀疑是否可以直接启动我的APP的Accessibility Settings
页面(图2)?
【问题讨论】:
您找到解决方案了吗?我为此而疯狂 @kalok 你有解决办法吗? 大家好,有人找到这个解决方案吗?我也有同样的问题 【参考方案1】:您可以使用以下 Intent 手动打开辅助功能设置(当 android.content.Intent
和 android.app.Intent
都已导入时):
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivity(intent);
查看以下资源了解更多信息:
https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/accessibility/ClockBackActivity.java http://developer.android.com/reference/android/app/Activity.html【讨论】:
感谢您的回答,@timgws。但是我的问题是直接打开我自己应用的辅助功能设置,而不是辅助功能设置的主页:( 最终这样做了。在我找到更好的访问页面的方法之前,我只是告诉用户点击我的应用并从设置中启用该服务。【参考方案2】:也许下面的代码可以帮助你:
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);
或者您可以搜索关键词“Fragment Injection”获取更多信息; 查看此链接,它对您的情况很有用:
http://securityintelligence.com/new-vulnerability-android-framework-fragment-injection【讨论】:
@money zhang 我应该在“你想显示的片段”中输入什么?我想输入我自己的无障碍服务设置.. 我尝试了我的应用程序名称、包名称服务类名称等,而不是“您要显示的片段”。请告诉我应该输入什么? 根据该链接,此方法不再有效,因为该漏洞已在 Android 4.4 Kitkat 中修复【参考方案3】:试试这个:
Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
【讨论】:
以上是关于如何在 Android 中启动我的 APP 的辅助功能设置页面?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android App 中使用代码设置启动 Activity