0

я следующая ситуация: когда я запускаю мое приложение следующий сценарий имеет место:андроид ручка активности запуска

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

Теперь в моем файле манифеста У меня есть следующий IntentFilter для MainActivity:

<intent-filter android:label="Conio" > 
    <action android:name="android.intent.action.VIEW" /> 
    <data android:scheme="myprotocol" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
</intent-filter> 

И все хорошо работает с большим «НО»: все работает только тогда, когда мое приложение уже открыто: мое приложение выведено на передний план, вызывается метод onCreate и с getIntent.getData() Я могу получить доступ к URI, который запустил мое приложение.

БОЛЬШАЯ ПРОБЛЕМА:

Что мне нужно:

  • Когда мое приложение еще не началось все должно начинаться с StartActivity согласно предыдущему объяснению
    • Когда мое приложение работа должна быть текущей

Для достижения этой цели я сделал следующую попытку: я применил, что IntentFilter к новому Activity в OnCreate метод этой деятельности, я положил следующий код

Intent intent = getPackageManager().getLaunchIntentForPackage("my.package.name"); 
if (intent != null) { 
    intent.setData(intent.getData()); 
    intent.putExtra("test", "test"); 
    startActivity(intent); 
    finish(); 
} 

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

@Override 
protected void onResume() { 
    super.onResume(); 
//this code returns null 
    String test=getIntent.getStringExtra("test"); 
} 

Как я могу заставить все это работать?

ответ

0

, если приложение уже запущенно, MainActivity доводится до фронта, но я не могу получить доступ к Намерению дополнительных услуг:

Чтобы получить Намерение поставить, когда активность работает либо использовать LocalBroadcastManager отправку нового Намерения запуска активности вместо вызова startActivity способ.

ИЛИ

Без добавления LocalBroadcastManagerFLAG_ACTIVITY_SINGLE_TOP в Намерении или добавить android:launchMode="singleTask" в AndroidManifest.xml при запуске MainActivity:

intent.setData(intent.getData()); 
intent.putExtra("test", "test"); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(intent); 

и переопределить метод onNewIntent в MainActivity:

protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
//get data from intent 
} 
Смежные вопросы