60 lines
2.0 KiB
Java
60 lines
2.0 KiB
Java
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);
|
||
}
|
||
}
|