如何将用户导航到“可搜索项目”设置?

时间:2011-01-15 20:22:32

标签: android search preferences

我打算编写一个可以快速搜索框提供结果的应用程序。

有没有办法触发Intent将用户导航到Android 1.6中的“可搜索项目”屏幕?

alt text

3 个答案:

答案 0 :(得分:3)

警告:未记录的行为,前方的龙!

我找到的一个解决方案是启动搜索设置活动,如下所示:

final Intent searchSettings = new Intent("android.search.action.SEARCH_SETTINGS");
startActivity(searchSettings);

您可以告诉用户选择“可搜索的项目”,然后在那里启用您的应用。我已经在Android 2.3.3和4.0上测试了这个,可以在更多版本上测试并在此处发布结果:)。

因为这是没有记录的,所以你应该采取一切可能的预防措施。一个简单的预防措施就是捕获意图未解决时引发的ActivityNotFoundException并让用户知道该功能不可用。但是,概述了更好的解决方案here


编辑:这实际上是记录在案的。您可以在SearchManager.INTENT_ACTION_SEARCH_SETTINGS中找到该操作,因此上述代码应写为:

final Intent searchSettings = new Intent("SearchManager.INTENT_ACTION_SEARCH_SETTINGS");
startActivity(searchSettings);

您可以使用Java反射来测试SearchManager是否有一个名为INTENT_ACTION_SEARCH_SETTINGS的静态成员,并相应地配置您的UI。此成员是在API Level 8(Android 2.2 Froyo)中添加的,因此它不适用于低于此值的任何内容。

不幸的是,没有Intent(我可以找到)将用户直接带到“可搜索项目”设置页面。

答案 1 :(得分:1)

开发人员文档中没有这个意图。我认为你将不得不深入挖掘资源。

如果您确实找到了意图,那么您还必须考虑事实的影响,它可能不是所有手机的标准。

我会问你自己是否真的需要它。搜索在Android中非常强大,你应该能够提出你自己的“搜索这些区域”偏好活动(就像你展示的那样)会做同样的事情......假设这就是你的意图是

答案 2 :(得分:0)

我想改进Felix的答案,所以...... 实际上,您可以使用以下内容将用户直接带到“可搜索项目”设置页面:

 Intent searchSettings = new Intent("com.android.quicksearchbox.action.SEARCHABLE_ITEMS");
    startActivity(searchSettings);

但我的设备上有一个奇怪的行为 - 显示的是包名,而不是app的名字。