onNewIntent() вызывается в onResume() несколько раз

Моя проблема в том, что в функции onNewIntent() я запускаю новое намерение открыть приложение контактов и позволить пользователю завершить процесс создания нового контакта, но когда я пытаюсь выйти из приложения контактов и вернуться в свое приложение, кажется, что onNewIntent() вызывается снова, скорее всего, из-за этого блока кода.

@Override
public void onResume() {
    super.onResume();
    // Check to see that the Activity started due to an Android Beam
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
        processIntent(getIntent());
    }
}

Есть ли способ очистить намерения после вызова onNewIntent (вызываемого processIntent).

1 ответ

Решение

Похоже, вы могли бы просто позвонить setIntent() в конце onNewIntent() с новым Намерением, которое имеет значение Действие, которое не будет запускать дальнейшую обработку.

Вот пример, где новое намерение для действия установлено с действием "do_nothing":

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    //Do your current processing here:
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        //process intent
        //.........

        // set intent for Activity to new Intent with "do_nothing" as action
        Intent i = new Intent();
        i.setAction("do_nothing");
        setIntent(i);
    }
}
Другие вопросы по тегам