package com.ttstd.elderlyassistant.utils; import android.net.Uri; import android.nfc.FormatException; import android.nfc.NdefMessage; import android.nfc.NdefRecord; import android.nfc.Tag; import android.nfc.tech.Ndef; import android.util.Log; import com.hjq.toast.Toaster; import java.io.IOException; public class WriteMessageUtils { private static final String TAG = "WriteMessageUtils"; public static void writePhoneToTag(Tag tag, String phoneNumber) throws Exception { // 构建tel:协议的URI Uri uri = Uri.parse("tel:" + phoneNumber); // 创建URI类型的NdefRecord NdefRecord uriRecord = NdefRecord.createUri(uri); NdefMessage message = new NdefMessage(new NdefRecord[]{uriRecord}); Ndef ndef = Ndef.get(tag); ndef.connect(); ndef.writeNdefMessage(message); // 写入NDEF消息 ndef.close(); } public static void writeUrlToTag(Tag tag, String url) throws Exception { // 确保URL包含协议(如http://) Uri uri = Uri.parse(url); NdefRecord uriRecord = NdefRecord.createUri(uri); NdefMessage message = new NdefMessage(new NdefRecord[]{uriRecord}); Ndef ndef = Ndef.get(tag); ndef.connect(); ndef.writeNdefMessage(message); ndef.close(); } public static void writeUrlAddPackage(Tag tag, String url, String pkg) throws Exception { Log.e(TAG, "writeUrlAddPackage: url = " + url); String fixedUrl = url.replace("+", "%2B"); // 替换 + 为 %2B // 1. 创建HTTP Record(HTTPS链接) Uri uri = Uri.parse(fixedUrl); NdefRecord httpRecord = NdefRecord.createUri(uri); // 2. 创建Android应用包名Record NdefRecord androidRecord = NdefRecord.createApplicationRecord(pkg); // 3. 按顺序组合记录 NdefMessage message = new NdefMessage(new NdefRecord[]{httpRecord, androidRecord}); // 4. 写入NFC标签 Ndef ndef = Ndef.get(tag); // 获取标签对象 ndef.connect(); ndef.writeNdefMessage(message); } }