Предполагая, что у вас уже есть готовое действие с требуемыми намерениями, вам нужно проверить 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>
Вы можете узнать больше об официальных документах здесь , как кто-то уже предложил.