【实例简介】
可以实现NFC标签卡的读写操作
【实例截图】
NFC写入工具,包括对NTAG213开启密码保护和关闭密码保护的功能
【核心代码】
package com.tzsafe.tazantagwritter
import android.Manifest
import android.app.Activity
import android.app.PendingIntent
import android.content.Context
import android.content.DialogInterface
import android.content.Intent
import android.net.Uri
import android.nfc.*
import android.nfc.tech.MifareUltralight
import android.nfc.tech.Ndef
import android.nfc.tech.NdefFormatable
import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.king.zxing.CaptureActivity
import com.king.zxing.Intents
import com.tbruyelle.rxpermissions2.RxPermissions
import com.tzsafe.tazantagwritter.app.ObjectBox
import com.tzsafe.tazantagwritter.entity.ConfigItem
import com.tzsafe.tazantagwritter.setting.ConfigActivity
import com.tzsafe.tazantagwritter.setting.PasswordActivity
import io.objectbox.Box
import io.objectbox.kotlin.boxFor
import kotlinx.android.synthetic.main.activity_main.*
import java.io.IOException
import java.nio.charset.Charset
import java.util.*
import kotlin.experimental.and
import kotlin.experimental.or
/**
* 主界面
*/
class MainActivity : AppCompatActivity() {
lateinit var mNfcAdapter: NfcAdapter
lateinit var mPendingIntent: PendingIntent
lateinit var box: Box
var dialog: AlertDialog? = null
val ACTION_WRITE = 1000;
val ACTION_DELETE_PWD = 1001;
var NFC_ACTION: Int = 0;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkPermissions()
box = ObjectBox.boxStore.boxFor()
// initTapLinxLib()
btn_scan_qr.setOnClickListener {
val intent = Intent(this, CaptureActivity::class.java)
startActivityForResult(intent, 102)
}
btn_write_nfc.setOnClickListener {
NFC_ACTION = ACTION_WRITE
showWriteDialog()
}
btn_password_manage.setOnClickListener {
startActivity(Intent(this, PasswordActivity::class.java))
}
btn_delete_pwd.setOnClickListener {
NFC_ACTION = ACTION_DELETE_PWD
showDeleteDialog()
}
}
private fun showDeleteDialog() {
dialog =
AlertDialog.Builder(this).setTitle("靠近要删除密码的NFC卡片").setView(R.layout.write_nfc_layout)
.setPositiveButton(
"取消",
DialogInterface.OnClickListener { dialogInterface, _ -> dialogInterface.dismiss() })
.create()
dialog!!.show()
}
private fun showWriteDialog() {
dialog = AlertDialog.Builder(this).setTitle("在NFC Tag上写").setView(R.layout.write_nfc_layout)
.setPositiveButton(
"取消",
DialogInterface.OnClickListener { dialogInterface, _ -> dialogInterface.dismiss() })
.create()
dia