有没有可靠的方法来检查我的活动是从Google智能助理(使用“开始/打开”命令)还是从启动器图标启动的?
有关Open命令的文档说明
(默认工作;没有特定意图。)
所以我并不乐观。
答案 0 :(得分:1)
答案简短:实际上没有
默认语音命令:Open XYZ
其中XYZ
是应用程序的名称,实际上没有附加任何信息,以告知您该请求已由 Google智能助理。
正如我已经告诉过你的那样,可能这样做是为了防止开发人员附加用户无法从open命令中获得的行为,这些行为应该只是打开应用程序,而不是别的。
注意:如果用户指定了其他命令,例如Open XYZ and play ABC song
,则会产生自定义意图,您可以使用getAction()
方法中的onCreate()
获取该自定义意图如here所述,但这不是您的具体情况。
参考文献:https://developers.google.com/voice-actions/system/#open_actions
答案 1 :(得分:1)
我在调试应用程序时发现以下差异,如果它是由Google助手语音交互打开命令启动
当它由Google助手语音互动打开命令启动时
你会得到“android.intent.extra.REFERRER_NAME”包含getIntent()中的键.getExtras()
getIntent()。getExtras()。的containsKey( “android.intent.extra.REFERRER_NAME”)
if(getIntent().getExtras()!= null && getIntent().getExtras().containsKey("android.intent.extra.REFERRER_NAME")){
Log.e(TAG, "onCreate: From Voice assistance");
}else{
Log.e(TAG, "onCreate: Not From Voice assistance");
}
但如果从菜单开始,您将无法获得该密钥。
可能这可以解决您的问题。