问题标签 [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 回答
341 浏览

android - 如何在不启动活动、消歧对话框的情况下从动态链接获取 FirebaseDynamicLinks 实例/自定义令牌。?

从我的应用程序中,我扫描网站上的二维码以使同一用户登录该应用程序。我现在的做法:

我打开二维码结果:// https://example.page.link/g8uj79dsfsdfy8qrf5Bp6

该应用程序重新启动并转到我设置的活动

从深度链接我得到自定义令牌然后我使用自定义令牌进行身份验证并获得用户ID

我不想重新启动并选择选项网站或应用程序。那么如何在不启动新活动的情况下获得动态链接意图?

0 投票
1 回答
49 浏览

android - 深度链接可以将用户重定向到 Google Play 的程度如何?

我不明白深度链接如何将用户重定向到谷歌播放?例如,如果我给用户一个 URL:myApp://launch 如果他没有安装我的应用程序,用户如何被重定向到谷歌播放?

0 投票
1 回答
1092 浏览

android - 使用包含路径和查询参数的(深度)链接打开应用程序

给出了这三个网址:

假设我在 gmail-app 中收到一封包含这三个链接的邮件,我需要以下行为:

到目前为止我所取得的成就:

此代码段适用于以下情况1),并且2):第一个 url 未在应用程序中打开,第二个是。但遗憾的是,我没有通过应用程序打开第三个链接。

path我还尝试了,pathPrefix和的一些不同变化pathPattern,但我没有运气实现所有三种给定的行为。

所以我需要你们的帮助,你们能提供一个满足给定要求的片段或一些我可以测试的提示吗?

更新:

更改android:pathPrefixandroid:pathPattern现在可以正常工作:系统的意图选择器仅针对案例显示2)3)案例1)直接打开浏览器。

我还想实现的是在进入应用程序或触发意图选择器之前检查特定参数。这应该只在参数param保持值hello而不是时发生goodbyepathPattern这可能在-attribute中使用某种正则表达式吗?

0 投票
1 回答
2552 浏览

android - 将 Serializable 用作 Android 导航组件的深层链接参数

使用深层链接时是否可以使用自定义Serializable对象作为片段参数?

我尝试了以下方法 - 在我的导航图 XML 文件中,我添加了以下几行:

EventId可序列化的数据类在哪里:

然后,当我尝试使用 URL 运行我的应用程序时myapp://event/4002,会引发以下异常:

long用( )替换类型可以app:argType="long"解决问题 - 没有例外,一切都按预期工作。

导航库似乎不知道如何将原始值从 URL 转换为我的EventId类。是否有可能以某种方式注册一个知道如何转换它的适配器?或者也许还有另一种解决方案?

0 投票
0 回答
207 浏览

android - Android 任务和应用程序链接 - 当应用程序链接打开一个 Activity 时,检查哪个是任务中的前一个 Activity

设想 :

在我的应用程序中,我启用了应用程序链接。因此,当触发应用链接时,我设置了一个虚拟对象AppLinkActivity (opens as "singleTask" to avoid creation of new task)来接收和处理通过应用链接接收到的 url。在处理 url 时,我必须检查应用程序是否显示“ DownloadActivity”,如果是,那么我必须显示一个对话框。

因此,当触发 App 链接时,我将拥有具有现有活动的现有任务,并且最重要的是 AppLinkingActivity。在这种情况下,我无法知道之前的活动是什么,因为我无法通过意图传递任何东西。

我想做的事

当通过应用程序链接打开 AppLinkingActivity 时,有什么方法可以找出last shown activity(of my app) before同一任务中的 AppLinkingActivity 是什么?

--或者--

如果我在清单中排除“singleTask”,则 AppLinkingActivity 将在新任务中打开。在这种情况下,有什么方法可以让我获得上一个任务中最后显示的(或最上面的)活动?如果是,我还需要一种方法来导航到上一个任务中最顶层的活动?在这种情况下,如果我只是finish()AppLinkingActivity,那么控件会返回到触发应用程序链接的源,例如浏览器或 gmail 应用程序等。

以上两个要求中的任何一个都可能吗?

0 投票
0 回答
1060 浏览

android - NavDeepLinkBuilder:深度链接到 startDestination

我们试图实现的是当用户点击通知时,他/她应该被重定向到某个片段。该目标片段startDestination在图中标记为(它有自己的.xml文件)。

为了创建PendinIntent这个,我们使用NavDeepLinkBuilder这样的:

其中是在该图的又名开始目的地中的根标记的属性中R.id.start_destination指定的片段的 id 。app:startDestinationnavigationR.navigation.destination_graph

如果我们尝试使用它,我们会收到以下错误。如果我们使用标记为 的片段以外的任何其他片段startDestination,它可以无缝工作。

我们的图表是这样的。

实际情况可能是什么,解决方法是什么?

编辑:如果图表与上面的图表一样,但缺少其android:id属性且未包含在 中BottomNavigationView,则错误更改为Caused by: java.lang.IllegalStateException: unknown destination during deep link: 0(第 3 行)

EDIT2:上面的场景,但是图这次有一个ID,没有在任何BottomNavigationView中使用。错误变为Caused by: java.lang.IllegalStateException: unknown destination during deep link: test.ourapp.app:id/messages

0 投票
1 回答
603 浏览

android - 隐式深层链接无法正常工作 - onCreate 调用了两次

当我从链接打开我的应用程序时,如果它已经在堆栈上(打开),什么也没有发生。应用程序的现有实例打开,没有任何重定向。我发现这个意图的原因被称为。所以,我在 onNewIntent 方法中添加了 setIntent(newIntent) ,但它没有帮助。然后我添加了以下代码:

但是,然后 onNewIntent 被调用了两次。点击链接后的日志结果为:(存在应用实例时)

否则,结果是:

由于 onCreate 被调用两次,屏幕闪烁。问题是什么?

PS启动模式是单任务。

0 投票
1 回答
176 浏览

android - 从浏览器重定向到 Android 应用程序 - 在发布应用程序之前

我按照此处关于如何使浏览器到应用程序重定向工作的说明进行操作,但似乎无论我做什么,我都会被引导到带有“找不到项目”的 Play 商店应用程序。-屏幕。

我曾尝试在我正在使用的开发平板电脑上安装该应用程序,希望当我启动调试应用程序时,转到一个网站并忘记调试应用程序,我会被引导回已安装的应用程序。

我希望能够在发布之前重定向到应用程序的原因是,我可以确保通过浏览器使用单独网站的多因素身份验证功能按预期工作。MFA 功能首先是应用程序存在的部分原因,因为它在很大程度上是所述 MFA 系统的演示。

我正在尝试的甚至可能吗?

显现:

尝试重定向回应用程序是:

我还注意到logcat的登录:

0 投票
0 回答
553 浏览

android - 如何防止浏览器重定向的深层链接循环(再次打开移动应用程序)?

我们有一个移动应用程序和一个网站。用户会收到带有网站页面链接的电子邮件。我们使用 iOS 通用链接和 Android 应用程序链接将移动应用程序与网站相关联。

假设电子邮件中的链接是https://abc/ticket/1234。当用户点击链接时,它会在移动应用程序中打开相关页面。用户可以通过点击该移动页面中的按钮在网站中打开相同的内容。它会打开网站中的相关页面。我们不直接打开 URL https://abc/ticket/1234。这是因为用户首先通过 IDP 进行身份验证,然后重定向到正确的页面。URL 类似于https://abc.idp?token=xyz&redirect=https://abc/ticket/1234

这是问题所在。

  1. 用户点击电子邮件中的链接https://abc/ticket/1234
  2. 移动应用页面被打开。
  3. 用户点击移动页面中的“在门户中打开”按钮。
  4. https://abc.idp?token=xyz&redirect=https://abc/ticket/1234在浏览器中打开。(这是因为用户应该首先通过 IDP 进行身份验证。)
  5. 几秒钟后,用户通过身份验证,浏览器被重定向到https://abc/ticket/1234
  6. 再次打开移动应用程序 <--- 我们不希望这样。我们需要在浏览器本身中打开它。

简而言之,

我们需要告诉操作系统是从同一个链接打开应用程序还是浏览器。

我们曾考虑使用 URL https://abc/ticket/1234?do_not_open_mobile_app=true传递一个附加参数,但在 apple-app-site-association 文件中无法使用查询参数进行 URL 比较。然后我们也尝试为 IDP 启用深层链接,然后它在 Android 中运行良好,但在 iOS 中却不行。

非常感谢您的投入。

0 投票
2 回答
1277 浏览

android - 从 Google Play 安装应用程序时,Android 中的 AppLinks(已验证的 Deeplinks)不起作用

我们为深度链接intent-filters定义了一些AndroidManifest。我们还assetlinks.json使用正确的 SHA 指纹将文件放置在我们的域中的适当位置。我们面临一个奇怪的问题,当从 Android Studio 安装应用程序时,这些应用程序链接直接打开我们的应用程序,中间没有任何选择器。

这也是期望的行为,但是,当我们将我们的应用程序上传到 Google play 并从那里下载时,这些应用程序链接App chooser首先打开,这不是期望的行为。

我们做了一些实验,比如为两个不同的链接创建不同的意图过滤器,删除一个链接等,但这种行为保持不变。还仔细检查了 SHA 指纹,它们似乎很好。