Как передать полученное намерение другому приложению / деятельности?
Я разрабатываю приложение, которое читает теги NFC. Если тег представляет собой простой текст, он отображается в TextView. Если это vCard, я хочу передать намерение контактам, где оно может быть обработано так же, как если бы на переднем плане не было приложения.
Я знаю, что могу вставить пользователя, используя
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
startActivity(intent);
но это только откроет приложение контактов без фактической передачи данных. Используя намерение, полученное моим приложением, выдает исключение NullPointerException (startActivity(recievedIntent)
). Вероятно, это связано с тем, что я обрабатываю получение и передачу в другом методе, хотя я передаю намерение от одного метода к другому.
Спасибо за ваше время!
1 ответ
Этим способом вы можете перенести данные в другое действие, например, в свой метод onNewIntent(намерение):
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
Intent myintent = new Intent(this, yourIntentActivity.class);
myintent.setAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
myintent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, rawMsgs);
myintent.putExtra(NfcAdapter.EXTRA_TAG, intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
startActivity(myintent);