Android NFC 写入包名,NDEF数据,唤醒 指定 APP 跳转 指定 页面Activity,读取数据处理
程序员文章站
2022-07-09 16:38:12
先放GITHUB 链接,可以直接跑一下代码体验一下https://github.com/TracyEminem/NFCNDEF配置NFC相关的权限
先放GITHUB 链接,可以直接跑一下代码体验一下https://github.com/TracyEminem/NFCNDEF 配置NFC相关的权限
<!-- 添加NFC权限 -->
<uses-permission android:name="android.permission.NFC" /> <!-- 要求当前设备必须要有NFC芯片 -->
<uses-feature
android:name="android.hardware.nfc"
android:required="true" />
接收的activity应该这样设置,加上intent filter,利用intent filter来启动指定的activity
<activity
android:name=".NfcReadActivity"
android:launchMode="singleInstance">
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="ext" //此处照写,标准写法
android:pathPrefix="/vndcn.com:nfc"//这里是你后面写入的数据的一部分createexternal部分数据
android:scheme="vnd.android.nfc" /> //此处照写,标准写法
</intent-filter>
</activity>
写入包名和数据
NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{NdefRecord.createExternal("vndcn.com", "nfc", content.getBytes()),NdefRecord.createApplicationRecord("com.mobile.cloud.nfcnde")});
//可以添加多条记录,content就是你要写入的内容,createApplicationRecord就是吸入你的包名
//下面是如何读取NFC写入的信息。
private String getCardId(Intent intent) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] bytesId = tagFromIntent.getId();
readNfcTag(intent);
Ndef ndef = Ndef.get(tagFromIntent);
return byteArrayToHexString(bytesId);
}
private void readNfcTag(Intent intent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(
NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msgs[] = null;
int contentSize = 0;
if (rawMsgs != null) {
msgs = new NdefMessage[rawMsgs.length];
for (int i = 0; i < rawMsgs.length; i++) {
msgs[i] = (NdefMessage) rawMsgs[i];
contentSize += msgs[i].toByteArray().length;
}
}
try {
if (msgs != null) {
NdefRecord record = msgs[0].getRecords()[0];
// String textRecord = parseTextRecord(record);
byte[] payload = record.getPayload();
String res = new String(payload);
mContent.setText("content url is: "+res);
}
} catch (Exception e) {
}
}
}
本文地址:https://blog.csdn.net/qq_16624353/article/details/107909000
上一篇: linux系统命令笔记整理
下一篇: 安卓系统后台进程问题分析整理