4

对于这个问题,我有一个无人认领的赏金。如果有人能够提供符合我标准的有效答案,我将奖励他们赏金。它不可见,因为赏金已过期,但我可以在事后奖励它一个可接受的答案。

当我使用 Chrome 时,我的应用程序设置了按需要工作的意图过滤器。不幸的是,Firefox 并没有以同样的方式实现深度链接。当我在 Firefox 中点击一个链接时,它会在地址栏的末尾显示一个小 Android 图标。如果我点击它,它将在 Firefox 中打开我的应用程序,我不喜欢这种行为。使用 Chrome,它只是打开应用程序(在第一次提示您选择应用程序后)

更新:单任务不起作用,它具有令人发指的副作用,即恢复活动无法从启动它的意图中获得额外内容。

这与其他深度链接 Firefox 问题( this , this , this , this , this , thisthis )不是重复的,因为这些问题是关于如何让深度链接工作的,而我了解深度链接在 Firefox 中是如何工作的他们已经为我工作了,但我想改变行为......

我在问:如果可能的话,我如何通过 Firefox 的深层链接打开我的应用程序的现有实例,并让它的行为与 Chrome 相同? 我不想使用 iframe。

我已经实现了 http 和 https 意图过滤器,如下所示:

<!-- https -->
<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
    <data
      android:host="myappurl"
      android:pathPrefix="/myprefix"
      android:scheme="https" />
</intent-filter>
<!-- http -->
<intent-filter>
  <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
      <data
        android:host="myappurl"
        android:pathPrefix="/myprefix"
        android:scheme="http" />
</intent-filter>

如果您要提供解决方案,请提供一个清晰的示例,其中包括代码应该在清单中的位置(如果有的话)以及副作用是什么(请参阅我上面的链接-singletask 不起作用为了这)

4

1 回答 1

0

你必须把android:launchMode="singleTask"你的活动标签。

这可以防止打开多个实例。如果您的应用程序已经打开,它将启动它,否则它将创建一个新实例。

于 2019-03-13T14:09:44.073 回答