问题描述
我正在使用App Actions和BII(内置意图)集成Google助手。 问题是,当我尝试使用语音命令时,它没有打开预期的屏幕,而是打开了应用程序。.当我调试它时,传入的URI是不同的(旧的),但现在却是另外一个。
Actions.Xml
<actions>
<action intentName="actions.intent.OPEN_APP_FEATURE">
<!-- Each parameter can reference an entity set using a custom ID. -->
<parameter name="feature">
<entity-set-reference entitySetId="FeatureEntitySet" />
</parameter>
<fulfillment urlTemplate="myappname://speed test/open{?appFeature}">
<parameter-mapping
intentParameter="feature"
urlParameter="appFeature" />
</fulfillment>
</action>
<entity-set entitySetId="FeatureEntitySet">
<entity
name="speedtest"
identifier="SPEED TEST" />
<!--<entity
name="second feature"
identifier="FEATURETWO" />-->
</entity-set>
AndroidManifest
<activity
android:name=".activities.SupportActivity"
android:launchMode="singletop"
android:screenorientation="portrait">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.broWSABLE" />
<!-- Accepts URIs that begin with "myappname://speed test” -->
<data
android:host="speed test"
android:scheme="myappname" />
</intent-filter>
</activity>
SupportActivity.java
private void handleIntent(Intent intent) {
String appLinkAction = intent.getAction();
Uri appLinkData = intent.getData();
if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null) {
String appFeature = appLinkData.getQueryParameter("appFeature");
if (appFeature != null && appFeature.contains("SPEED TEST")) {
//startActivity or do something
}
}
}
Google Assistant语音命令: “打开[我的应用名称]速度测试”,然后它将打开应用 “打开[myappname]支持”,然后在定义了意图过滤器的地方打开预期的活动
Uri字符串-myappname:// speed test / open?appFeature =提供语音命令“ Open [myappname] [support]”的支持 但是当我以“打开[myappname] [速度测试]”的方式发出语音命令时,它将启动该应用程序。 应用内操作测试工具可以使用,但不能与Google Assistant一起使用,语音和文本都不能使用。
解决方法
确保您使用的是3.4.2+ App Actions测试工具(AATT)。显示旧的URL表示没有使用最新的actions.xml
更新预览。