Я пытаюсь реализовать функцию Facebook Deep Linking в своем приложении и столкнулся со следующим сценарием:
У меня есть функция MainActivity, которая объявляется так:
<activity
android:name="com.mypackage.android.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Эта активность + имя моего пакета также объявляется в настройках моего приложения на веб-сайте разработчика facebook.
Как только ссылка нажимается на приложение Facebook, я должен обрабатывать это событие с помощью метода onCreate моей деятельности. Следующий код обрабатывает событие:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri target = getIntent().getData();
if (target != null){
// got here via Facebook deep link
// once I'm done parsing the URI and deciding
// which part of my app I should point the client to
// I fire an intent for a new activity and
// call finish() the current activity (MainActivity)
}else{
// activity was created in a normal fashion
}
}
Все идет согласно плану, за исключением следующего сценария:
- Пользователь запустил мое приложение
- Создана MainActivity.
- Создана вторичная активность
- MainActivity завершена
- Приложение переходит в фоновое изображение с помощью кнопки устройства.
- Глубокая ссылка попадает в приложение Facebook.
В этом случае мое приложение снова переходит на передний план, но MainActivity onCreate/onNewIntent не вызывается, вместо этого SecondaryActivity onResume() вызывается и восстанавливается Последнее состояние.
Примечание. Я протестировал эту проблему на Samsung Nexus с Android 4.2.1 и получил этот результат, хотя при тестировании на Galaxy S1 с Android 2.3.5 он работал, как я и ожидал.
Любая помощь будет принята с благодарностью, Спасибо.