【问题标题】:How do I pass a recieved intent to another app/activity?如何将收到的意图传递给另一个应用程序/活动?
【发布时间】:2017-01-13 20:48:39
【问题描述】:
我正在开发一个读取 NFC 标签的应用程序。如果标签是纯文本,它会显示在 TextView 中。如果它是 vCard,我想将意图直接传递给联系人,在那里可以像前台没有应用程序一样处理它。
我知道我可以使用插入用户
Intent intent = new Intent(ContactsContract.Intents.Insert.ACTION);
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
startActivity(intent);
但这只会打开联系人应用程序而不会实际传递数据。使用我的应用收到的意图,引发 NullPointerException (startActivity(recievedIntent))。这可能是因为我在不同的方法中处理接收和传递,即使我将意图从一种方法传递到另一种方法。
感谢您的宝贵时间!
【问题讨论】:
标签:
android
android-intent
nfc
android-contacts
vcf-vcard
【解决方案1】:
您可以通过这种方式将数据传输到另一个活动,例如在你的 onNewIntent(Intent intent) 方法中:
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);