当前位置: 移动技术网 > 移动技术>移动开发>Android > Android NFC 写入包名,NDEF数据,唤醒 指定 APP 跳转 指定 页面Activity,读取数据处理

Android NFC 写入包名,NDEF数据,唤醒 指定 APP 跳转 指定 页面Activity,读取数据处理

2020年08月11日  | 移动技术网移动技术  | 我要评论
先放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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网