Files
ElderlyAssistant/app/src/main/java/com/ttstd/elderlyassistant/utils/WriteMessageUtils.java

60 lines
2.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 RecordHTTPS链接
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);
}
}