我正在尝试在我的Android应用程序中实现深层链接 . 我一直关注this guide . 我在Android清单中启动了Android活动并进行了intent-filter:
<activity
android:name=".MyActivity"
android:parentActivityName=".MainActivity" >
<intent-filter android:label="@string/filter_title_deep_link">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.example" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
我从adb产生这个意图:
adb shell am start -W -a android.intent.action.VIEW -d "com.example://test" com.example
正在使用正确的意图数据创建活动,并按预期运行 . 但是,按下后退按钮后,应用程序退出 . 我期待后备堆栈使用 MainActivity
构建,由Android清单中的 parentActivityName
指定 . 显然事实并非如此 .
在这种情况下,如何将父活动添加到后台堆栈?
我想知道我是否可以在通知的上下文中使用 TaskStackBuilder
here,但不确定它是如何工作的 .
也许我应该有一个中间Activity来构建主要活动,例如:
TaskStackBuilder.create(this)
.addParentStack(MyActivity.class)
.addNextIntent(new Intent(this, MyActivity.class))
.startActivities();
?
3 回答
我遇到了完全相同的问题 . 因此,如果您希望用户转到父活动,只要他们按下
UP
按钮,您就可以在AndroidManifest.xml
中定义父活动,然后以编程方式控制向上导航 .您可以在所有活动中执行相同操作,以不断地将用户导航回主屏幕 . 此外,您可以在导航用户之前创建完整的后台堆栈 . 请阅读以下文档中的更多内容 .
Providing Up Navigation
直接的解决方案
您可以通过调用
isTaskRoot()
来检查深层链接活动是否有后备堆栈以返回应用程序的任务本身 . 我不太确定它是否确实有任何警告 .在这种情况下,您实际上不必在Android Manifest中声明父活动 .
你试过这样做吗
在深层链接的情况下,您必须构建自己的App堆栈 .
我一直在使用Android链接和应用程序索引功能深入链接,我希望这对索引应用程序页面很有用,并允许谷歌按照此处的指定抓取应用程序Deep link Guide
此最佳实践适用于App索引API,因为您已从Android开发人员站点引用了App索引培训站点的deeplink链接 .