Как запустить действие из другого действия, но с конкретным намерением - из OnNewIntent

Хорошо... поэтому я думаю, что название немного сбивает с толку. поэтому я объясню: у меня есть приложение NFC, которое я успешно обрабатываю NDEF_DISCOVERED в действии A. затем запускается новое действие (B). В этом новом действии (B) я хочу иметь возможность поймать другой тег и позволить действию A обрабатывать его, как и раньше, поэтому я использую OnNewIntent, чтобы получить это намерение тега и хочу начать действие A. Но если я вызову startActivity(myIntent ) с традиционным myIntent = new Intent(this, A.class), затем действие A запускается с этим myIntent, и я хочу, чтобы действие A обрабатывало намерение тега, которое было «поймано» в действии B..

Как я могу это сделать?

Спасибо.


person Eran Tal    schedule 21.01.2012    source источник


Ответы (2)


Вы должны иметь возможность добавить свое намерение тега в действии B в качестве дополнения к традиционному намерению с помощью myintent.addExtra("tagkey", tagIntent). Поскольку Intent реализует Parcelable, он будет добавлен как дополнение Parcelable. Затем в onCreate() действия A введите что-то вроде:

Intent intent = getIntent();
if (intent.hasExtra("tagkey")) {
    setIntent(intent.getParcelableExtra("tagkey")
}

Замените строку «tagkey» тем, что наиболее важно для вашего собственного кода. Вы также можете поместить аналогичный фрагмент в onNewIntent().

person John Starbird    schedule 23.01.2012

Если тип сообщения NDEF достаточно специфичен, чтобы ему соответствовало только ваше действие A, вы можете установить «android:launchMode="singleTask"» в разделе действий вашего манифеста Android для этого действия. Затем действие B будет закрыто всякий раз, когда вы сканируете новый тег с тем же типом сообщения NDEF.

person NFC guy    schedule 10.02.2012