问题标签 [android-deep-link]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
212 浏览

android - 尝试在我的应用程序中共享时,分支通用深度提供空的引用参数

我有以下代码创建深层链接 -

所以我的问题如下 -

我确实得到了工作表菜单,我可以从许多支持应用程序中选择它来分享我的信息。如果我检查任何东西而不是我自己的应用程序(它有一个内置的消息系统,类似于 WhatsApp),深层链接工作正常,并且referringParams具有我可以使用的有效值 -

在此处输入图像描述

但如果我通过我的应用程序消息系统分享它,我什么也得不到——

在此处输入图像描述

我的猜测是它与SHARE_WITH枚举有关 -

如您所见,我仅限于几个可供选择的应用程序包,我无法输入自己的应用程序包名称。所以,如果我是正确的 - 这就是问题所在。

编辑 -

即使没有 SHARE_WITH 它也不起作用 - 深层链接在我的应用程序内部停止工作,但在它外部工作。

如何解决此问题并允许使用我自己的应用程序包发送深层链接?

0 投票
1 回答
947 浏览

android-fragments - 通过 NavGraph 将数据从 Fragment 发送到 Main Activity

在我的应用程序中,我使用具有多个片段架构的单个活动,并使用导航库在它们之间导航。在其中一个片段中,我有多个类别,每个类别都与一个 ID 相关联。当点击一个类别时,我会使用下面的代码将用户带到相应的类别解释器屏幕。

上面的代码将它们发送到与相关联的解释器屏幕categoryId。一切都很好,直到此时,正确的解释器屏幕基于categoryId. 在这个解释器屏幕中,我有一个带有标签的深层链接,该标签chatbot://fragment/wizardintro应该让主要活动知道要将用户发送到的特定后续片段。我用下面的代码表示所有可以接收此深层链接的片段。

在 MainActivity 中,我有一个方法可以接收所有不同的深度链接意图,并将它们与将使用以下代码启动相应类别片段的标签进行匹配。

categoryId现在,当我尝试在 Main Activity 中检索它并将其传递给下一个片段时,我的问题就出现了。我什么也没得到,只有默认的 Long 被传递。我认为 MainActivity 中的函数覆盖 fun onNewIntent(intent: Intent?) { } 接收任何意图。需要明确的是,这些意图是从解释器片段发送的,从技术上讲,它是一个加载 json 的片段。在 json 中有一个 "route": {"type": "route", "url": "chatbot:///fragment/wizardintro"

在 MainActivity 中,onNewIntent 函数接收这些意图并使用这一行将它们解包,intent?.data?.toString().also ...然后在 when 语句中选择一个具有匹配项的片段chatbot:///fragment/wizardintro

我说这一切是为了说主要活动实际上并没有获得 categoryId,它只是选择启动必要的片段,而实际上没有任何与categoryId

这让我觉得第一次点击的 categoryId 实际上并没有传递给 MainActivity。尽管在我看来,将对象/数据从片段传递到活动似乎并不难。我错过了什么?我可以阅读什么来对自己进行更多的教育?感谢您的时间和回复!

0 投票
2 回答
133 浏览

android - 与特定语言的深层链接

我正面临一个与深层链接有关的特定问题。我的意思是,对于通用链接,我有类似的东西

这意味着语言可以/en/ /fr/ /de/ /it/ /es/...

问题是我在 Manifest 中尝试:

*不起作用。请问有什么解决办法吗?

0 投票
0 回答
158 浏览

android - OnCreate 从 onNewIntent 触发两次

我正在使用深度链接,launchMode="singleTask"。如果有我的活动实例,一切正常:只调用 onNewIntent。但是如果没有实例,首先调用onCreate,然后调用onNewIntent,再调用onCreate。这就是为什么,屏幕闪烁。问题是什么?我删除了所有代码,只记录了事件。但是观察到相同的行为。

日志上出现以下内容: 有实例:onNewIntent 没有实例:onCreate、onNewIntent、onCreate

即使我删除了 handleIntent 方法,也会发生同样的情况。

0 投票
1 回答
7021 浏览

android - 带有导航组件的 Android 深层链接无法按预期工作

我希望你们一切都好。

我有一个小问题;

我正在使用导航组件,单个活动多个片段。我对深度链接有一个小问题。

  • 我已经<nav-graph/>在清单中设置并设置了launcherMode =“singleTask”,

  • 我已经<deeplink/>在导航图中设置了。

  • 我已经在片段中处理了意图附加内容。

我的流程是;

  1. 用户点击忘记密码,填写编辑文本然后请求深度链接邮件。工作正常
  2. 用户点击电子邮件中的深层链接并选择应用程序,然后自动导航到 CreatePasswordFragment(深层链接目标片段)&(我可以在这里处理 args,也可以正常工作)

问题是; 有时,如果应用程序在后台打开(例如我请求邮件然后按下主页按钮)并且当我单击深度链接时,最后一个片段运行而不是目标片段,即 CreatePasswordFragment 关于可能导致问题的任何想法?

谢谢!

导航版本:2.2.0

电子邮件附带的深层链接

导航图

安卓清单

反编译清单

0 投票
1 回答
830 浏览

android - 使用 Android Navigation 组件的深层链接和动画

我正在尝试实现忘记密码的流程。我想做的是在应用程序内处理收到的电子邮件,其中包含一个忘记密码网页的链接。

使用导航组件,我创建了一个深层链接,它打开了正确的片段(带有密码字段的片段)。所以我可以更改密码。单击返回,我返回登录屏幕,这是我的导航图的起点。

一切都按预期工作,除了动画。当我在目的地之间创建一个动作时,我可以分配进入/退出/popenter/popexit 动画,但是通过深层链接我没有创建任何动作,所以当我推回时,我到达了预期的片段但没有动画是玩过。

我试着用代码玩了一下,但没有结果,我在文档中找不到任何可能的解决方案。

我尝试在导航图中创建一些操作(右键单击目的地有 4 个不同的选项:

  • 到目的地(最常见也是我经常使用的)
  • 自我(我不明白这样做的目的)
  • 返回源代码(我不明白这样做的目的)
  • 全球的

他们似乎都没有解决我的问题。想法?提前致谢。

0 投票
1 回答
1159 浏览

android - 如何在与当前活动相同的任务中使用深度链接打开活动?

我有 2 个活动 MainActitvity(launchMode:standard) 和 DeepLinkingActivity(launchMode:standard)

当 MainActivity 出现时,我单击将打开 DeepLinkActivity 的链接。从文档

https://developer.android.com/guide/components/activities/tasks-and-back-stack#ManifestForTasks

DeepLinkingActivity 应该在与 MainActivity 相同的 Task 中启动,并放在该 Task 的顶部。看来不是,MainActity 和 DeepLinkingActivity 现在存在于 2 个单独的任务中(按回 DeepLinkingActivity 会将我导航到启动器屏幕而不是 MainActivity)。

我确实尝试将 DeepLinkingActivity 的启动模式更改为 singleTask。它在同一个任务 MainActivity 中启动了 DeepLinkingActivity,但它也清除了返回堆栈(没有 MainActivity 可以返回)

那么,当我从深层链接启动时,如何将 DeeplinkingActivity 放置在同一任务中的 MainActivity 之上。

0 投票
2 回答
279 浏览

android - 本地化有时会重置为系统区域设置

我有一个单一的活动应用程序,语言设置大多按预期工作。onCreateView()我通过文本的资源 ID设置每个视图的文本。但有时,当我进入我的应用程序时,语言是系统默认的,而不是选择的语言。当我从深层链接(小部件或通知)导航到应用程序时也会发生同样的情况。当我导航到另一个片段并返回时,一切都会在正确的区域设置下变得正确。

我试图调试我的应用程序以发现原因。我根据系统默认值获得的每个资源 ID 文本,而不是选择的语言。当我包装我的片段上下文然后获取文本时,我得到了正确的结果。

这就是我设置语言的方式:

在我的活动中,我覆盖了以下方法:

0 投票
1 回答
2809 浏览

android - 如果应用程序已打开,则深层链接不会正确重定向

我正在使用 Jetpack Navigation 进行深层链接。我已添加android:launchMode="singleTask"到我的活动中。如果之前未打开应用程序,则会正确重定向深层链接。但是,如果应用程序存在于内存中,则应用程序将进入前台,但深度链接未正确打开。

我的设备是搭载 Android 10 的 Pixel 2。我发现onCreate只有在我第一次打开应用程序时才会调用它。但是,onNewIntent每次我单击深层链接时都会调用它。

是 Jetpack Navigation 中的错误还是我在设置时忘记了某些内容?

0 投票
0 回答
675 浏览

android - Jetpack Navigation 在 onNewIntent 中手动处理深层链接

我正在使用 Jetpack 导航。我需要手动处理深层链接,因为:

1) 隐式深层链接无法正常工作android:launchMode="singleTask" 如果应用程序已打开,则深层链接无法正确重定向

2)我不仅传递了简单类型,还传递了 Parcelables,所以我无法传递参数

onNewintent我已经完成了在我的活动中使用显式深度链接的概念证明

它可以在我的手机上使用,但老实说,它闻起来很香。这是使用 Jetpack Navigation 显式深度链接的预期方式吗?我可以以更好的方式手动处理 Jetpack Navigation 深层链接吗?