From 1b133d1e4bf55282e3fdcecfb08764fcbf35948c Mon Sep 17 00:00:00 2001 From: Young-Six-6 Date: Tue, 9 Jun 2026 15:28:05 +0800 Subject: [PATCH] build nfc --- .../main/java/mba/vm/onhit/ui/MainActivity.kt | 254 ++++++++++++++++++ .../drawable-v21/bg_button_text_ripple.xml | 12 + .../res/drawable/bg_button_text_ripple.xml | 18 ++ .../res/layout/bottom_sheet_build_ndef.xml | 146 ++++++++++ app/src/main/res/values-zh/strings.xml | 29 ++ app/src/main/res/values/strings.xml | 31 ++- 6 files changed, 489 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/drawable-v21/bg_button_text_ripple.xml create mode 100644 app/src/main/res/drawable/bg_button_text_ripple.xml create mode 100644 app/src/main/res/layout/bottom_sheet_build_ndef.xml diff --git a/app/src/main/java/mba/vm/onhit/ui/MainActivity.kt b/app/src/main/java/mba/vm/onhit/ui/MainActivity.kt index a764f4c..a0ef79d 100644 --- a/app/src/main/java/mba/vm/onhit/ui/MainActivity.kt +++ b/app/src/main/java/mba/vm/onhit/ui/MainActivity.kt @@ -3,6 +3,8 @@ package mba.vm.onhit.ui import android.app.Activity import android.content.Intent import android.net.Uri +import android.nfc.NdefMessage +import android.nfc.NdefRecord import android.os.Build import android.os.Bundle import android.os.Parcel @@ -12,6 +14,11 @@ import android.view.View import android.view.WindowInsets import android.view.inputmethod.InputMethodManager import android.widget.PopupMenu +import android.widget.ArrayAdapter +import android.widget.Button +import android.widget.EditText +import android.widget.Spinner +import android.widget.TextView import android.widget.Toast import android.window.OnBackInvokedDispatcher import androidx.core.content.IntentCompat @@ -326,6 +333,7 @@ class MainActivity : Activity() { private fun showAddPopupMenu(view: View) { val popup = PopupMenu(this, view) popup.menu.add(0, 1, 0, R.string.menu_add_folder) + popup.menu.add(0, 3, 1, R.string.menu_build_ndef) if (nfcHandler.isEnabled() && pendingImportUri == null) popup.menu.add(0, 2, 2, R.string.import_ndef) @@ -336,12 +344,258 @@ class MainActivity : Activity() { refreshCurrentDir() } 2 -> nfcHandler.startRead() + 3 -> showBuildNdefDialog() } true } popup.show() } + + private fun showBuildNdefDialog() { + val dialog = DialogHelper.createBottomDialog( + this, + R.layout.bottom_sheet_build_ndef + ) + + data class BuiltRecord( + val type: String, + val value: String, + val record: NdefRecord + ) + + val builtRecords = mutableListOf() + + val spinner = dialog.findViewById(R.id.spinner_ndef_type) + val input = dialog.findViewById(R.id.et_ndef_value) + val btnAddRecord = dialog.findViewById