在我的Android项目中,我们最近在文档之后添加了语音搜索。它工作正常,但是仅在搜索一个单词时有效。这似乎不是故意的,因为在Google的示例中,他们搜索“毛伊岛之旅”。
我们已经使用Google Assistant应用(最新版本)在不同设备上尝试了许多搜索命令,并通过adb启动了
。那么,什么对我们有用: “好吧Google,请在{ourApp}上搜索巧克力。”
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query 'chocolate'
结果:应用程序在正确的屏幕上启动并带有正确的查询
什么不起作用: “好吧Google,请在{ourApp}上搜索冰淇淋。”
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query 'ice cream'
结果:Google助理显示网络搜索结果,通过adb,我们得到:
Starting: Intent { act=com.google.android.gms.actions.SEARCH_ACTION pkg=cream (has extras) }
Error: Activity not started, unable to resolve Intent { act=com.google.android.gms.actions.SEARCH_ACTION flg=0x10000000 pkg=cream (has extras) }
这看起来好像命令不正确,因为系统将“ cream”识别为程序包名称。即使我们将包名称显式添加到adb命令中,结果也一样。
我们的集成代码:
<activity
android:name=".features.search.activities.SearchResultsActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.google.android.gms.actions.SEARCH_ACTION"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
然后在SearchResultsActivity中:
searchTerm = intent.getStringExtra(SEARCH_TERM_KEY) ?: intent.getStringExtra(SearchManager.QUERY).orEmpty()
如何使用Google助手实现多字搜索?
答案 0 :(得分:0)
我无法告诉您原因(找不到文档),但是需要转义空格。
因此,这是您的固定示例:
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION --es query 'ice\ cream'
作为一种解决方法,我编写了以下脚本(名为send-search.sh
):
inputQuery=$(printf %q "$1")
adb shell am start -a com.google.android.gms.actions.SEARCH_ACTION -e query "$inputQuery"
这是您的运行方式:
sh send-search.sh "ice\ cream"