我打算编写一个可以快速搜索框提供结果的应用程序。
有没有办法触发Intent将用户导航到Android 1.6中的“可搜索项目”屏幕?
答案 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的名字。