Как проверить, запущено ли приложение Android с помощью DeepLink или обычный запуск? - PullRequest
1 голос
/ 03 февраля 2020

У меня есть приложение, в котором мне нужно выполнять разные задачи при разных типах запуска. Как определить, что это приложение было запущено с помощью Deeplink, когда мое приложение было в фоновом режиме.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Предполагая, что у вас уже есть готовое действие с требуемыми намерениями, вам нужно проверить if(getIntent().getAction() != null) своего действия, что означает, что оно было запущено по ссылке. Обычные намерения, используемые для навигации, вернутся null.

Теперь проблема в том, что ваша деятельность уже выполнялась в фоновом режиме, и вы написали этот код в onCreate(), а для операции с глубокими связями было установлено значение * 1006. * или запущен с FLAG_ACTIVITY_SINGLE_TOP, он не сработает снова.

Для этого вам придется переопределить onNewIntent(Intent intent) метод вашей деятельности, так что вы можете знать каждый раз, когда ваша деятельность запускается с намерения , Опять же, здесь вы можете проверить if(intent.getAction() != null) и intent.getData() для извлечения данных.

Следует отметить, что следует избегать запуска одного и того же кода дважды в onCreate и onNewIntent

Если вы еще не внедрили глубокое связывание в своем приложении, вам сначала нужно будет использовать <intent-filter>, чтобы сделать действие доступным для обработки намерения при нажатии на ссылку и т. Д. c. в качестве примера

        <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="www.example.com"
                android:pathPattern="/.*"
                android:scheme="https" />
        </intent-filter>

Вы можете узнать больше об официальных документах здесь , как кто-то уже предложил.

0 голосов
/ 03 февраля 2020

Когда по нажатой ссылке или программному запросу c вызывается веб-URI-намерение, система Android пытается выполнить каждое из следующих действий в последовательном порядке, пока запрос не будет выполнен успешно:

Открыть предпочтительный пользователь приложение, которое может обрабатывать URI, если он указан. Откройте единственное доступное приложение, которое может обрабатывать URI. Разрешить пользователю выбирать приложение из диалогового окна.

Чтобы создать ссылку на содержимое приложения, добавьте фильтр намерений, который содержит эти элементы и значения атрибутов в манифесте:

https://developer.android.com/training/app-links/deep-linking

Посетите официальный android do c, чтобы узнать больше о глубоких ссылках

...