Android 实现NFC_TRANSACTION_EVENT
时间: 2023-07-30 21:04:15 浏览: 194
基于Android系统的NFC技术实现
4星 · 用户满意度95%
NFC_TRANSACTION_EVENT 是 NFC 交易事件,主要用于 NFC 支付等场景中。在 Android 中,可以通过以下步骤实现 NFC_TRANSACTION_EVENT:
1. 在 AndroidManifest.xml 文件中添加以下权限:
```
<uses-permission android:name="android.permission.NFC" />
```
2. 在布局文件中添加一个 NFC 标签:
```
<TextView
android:id="@+id/nfc_tag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
```
3. 在 Activity 中注册处理 NFC 事件的 IntentFilter:
```
val intentFilter = IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED).apply {
addDataType("*/*")
}
val techLists = arrayOf(
arrayOf(NfcF::class.java.name),
)
nfcAdapter.enableForegroundDispatch(this, PendingIntent.getActivity(
this, 0, Intent(this, javaClass).apply {
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
}, 0
), arrayOf(intentFilter), techLists)
```
4. 在 Activity 中重写 onNewIntent 方法,处理 NFC 事件:
```
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
if (NfcAdapter.ACTION_TECH_DISCOVERED == intent?.action) {
handleNfcIntent(intent)
}
}
private fun handleNfcIntent(intent: Intent) {
val tag = intent.getParcelableExtra<Tag>(NfcAdapter.EXTRA_TAG)
val nfcTag = findViewById<TextView>(R.id.nfc_tag)
nfcTag.text = tag.toString()
nfcTag.visibility = View.VISIBLE
}
```
5. 在 Activity 的 onDestroy 方法中取消注册 NFC 事件:
```
override fun onDestroy() {
super.onDestroy()
nfcAdapter.disableForegroundDispatch(this)
}
```
以上就是实现 NFC_TRANSACTION_EVENT 的基本步骤。需要注意的是,不同的 NFC 标签类型可能需要不同的技术列表,需要根据实际情况进行调整。
阅读全文