2017-01-03 6 views
0

Я только что внедрил глубокую привязку к моему приложению. Я добавил фильтр намерений к своей основной деятельности. Когда пользователь запускает мою схему url, я разбираю ее и обрабатываю в действии, чтобы отображать соответствующую информацию в зависимости от параметров. Он работает хорошо, когда мое приложение запускается с нуля.Начать основное действие при открытии фонового приложения из другого приложения по схеме URL

<activity 
    android:launchMode="singleTask" 
    android:name="com.my.app.ui.activities.MainActivity" 
    android:screenOrientation="portrait" 
    android:configChanges="orientation|screenSize|"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <data android:scheme="myapp-scheme"/> 
    </intent-filter> 
</activity> 

Проблема возникает, когда пользователь открывает некоторые другие действия в стеке и переходит в фоновый режим. Теперь, если это приложение возобновлено с фона, вызывая мой url схемы, все действия все еще находятся в стеке, и основное действие не отображается. Как я могу это решить? Я думаю о навигации к основному виду деятельности, но у меня нет информации, если приложение было запущено из другого приложения или обычным способом.

ответ

1

Вы должны сделать свой MainActivity как singleTask, добавив следующую строку в манифест (для ManiActivity):

андроида: launchMode = "singleTask"

Затем переопределить onNewIntent() в MainActivity и обрабатывать навигацию на основе данных глубокой ссылки. Надеюсь, это ответит на ваш вопрос.

+1

Спасибо! Это то, что я искал. :) – objc3p0

+0

Как это может быть правильный ответ? Если вы посмотрите на manfest, опубликованный в вопросе, OP уже указал 'launchMode =" singleTask "'! –

+0

Кроме того, это не может быть правильно, потому что если в существующей задаче уже есть другая «активность» поверх «MainActivity», «MainActivity.onNewIntent()» НЕ будет вызываться. –

 Смежные вопросы

  • Нет связанных вопросов^_^