Android глубокая ссылка Firefox, как Chrome - PullRequest
2 голосов
/ 09 марта 2019

У меня есть невостребованная награда за этот вопрос.Если кто-то сможет дать рабочий ответ, который соответствует моим критериям, я вознагражу его за вознаграждение.Это не видно, потому что срок действия награды истек, но я могу вознаградить ее после факта приемлемым ответом.

В моем приложении настроены фильтры намерений, которые работают так, как мне нужно, когда я использую Chrome.К сожалению, Firefox не реализует глубокие ссылки таким же образом.Когда я нажимаю на ссылку в Firefox, она показывает маленький значок Android в конце адресной строки.Если я коснусь этого, оно откроет мое приложение в Firefox , и мне не нравится это поведение.В Chrome приложение просто открывается (после первого выбора приложения)

ОБНОВЛЕНИЕ: singletask не работает и имеет отвратительный побочный эффект: возобновление действия, когда он не может получить дополнительные сведения из намерения, которое его запустило.

Это не дубликат других вопросов Firefox с глубокими ссылками ( this , это , это , это , это , это и это )потому что эти вопросы касаются того, как заставить работать глубокие ссылки на всех , тогда как я понимаю, как работают глубокие ссылки в 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>

Если вы собираетесь предоставить решение, пожалуйста, предоставьте ясный пример, который включает в себя контекст относительно того, куда код должен идти в манифесте (если вообще), и каковы побочные эффекты (см.моя ссылка выше - синглетск не работает для этого)

1 Ответ

0 голосов
/ 13 марта 2019

Вы должны поместить android:launchMode="singleTask" под тегом активности.

Это предотвращает открытие нескольких экземпляров.Если ваше приложение уже открыто, оно запустит его, иначе оно создаст новый экземпляр.

...