之前有需求,再掃描商品NFC標簽的時候直接跳轉到APP中的商品詳情界面,提供的NFC標簽沒有資料,需要自己寫入資料,
如何去寫入標簽資料 并指定跳轉界面呢,這里做一下記錄,
/**
* 往標簽寫資料的方法
*/
public void writeNFCTag() {
Tag detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{
//三個引數 第一個 和 第二個 就是在清單檔案中定義在接受的activity
//<intent-filter> 前綴 第三個是要寫入的資訊
NdefRecord.createExternal("angel.touch.com", "nfc", content.getBytes()),
NdefRecord.createApplicationRecord("com.***.***.***")});//這里是APP的包名
//轉換成位元組獲得大小
int size = ndefMessage.toByteArray().length;
try {
//2.判斷NFC標簽的資料型別(通過Ndef.get方法)
Ndef ndef = Ndef.get(tag);
//判斷是否為NDEF標簽
if (ndef != null) {
ndef.connect();
//判斷是否支持可寫
if (!ndef.isWritable()) {
return;
}
//判斷標簽的容量是否夠用
if (ndef.getMaxSize() < size) {
return;
}
//3.寫入資料
ndef.writeNdefMessage(ndefMessage);
Toast.makeText(this, "寫入成功", Toast.LENGTH_SHORT).show();
} else {
//若標簽為格式化按此步驟進行
NdefFormatable format = NdefFormatable.get(tag);//Ndef格式類
//判斷是否獲得了NdefFormatable物件,有一些標簽是只讀的或者不允許格式化的
if (format != null) {
//連接
format.connect();
//格式化并將資訊寫入標簽
format.format(ndefMessage);
Toast.makeText(this, "寫入成功",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "寫入失敗", Toast.LENGTH_SHORT).show();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
在讀取NFC的APP中(包名與上面代碼中createApplicationRecord寫入時的包名相同) 的AndroidManifest.xml中宣告Activity應該如下操作
<activity
android:name=".activity.NFCProductActivity"
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="/angel.touch.com:nfc"
android:scheme="vnd.android.nfc" />
<!-- //此處照寫,標準寫法-->
<!--//這里是你后面寫入的資料的一部分createExternal部分資料-->
<!--//此處照寫,標準寫法-->
</intent-filter>
</activity>
NdefRecord.createExternal("angel.touch.com", "nfc", content.getBytes());
android:pathPrefix="/angel.touch.com:nfc"
這兩段代碼中的定義的就是系統識別到NFC的資訊后,會直接喚起APP的這個activity
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/292371.html
標籤:其他
上一篇:淦!在外包開發的三年給整廢了,備戰兩個月終拿到Android阿里位元組哈啰offer總結,阿里P6+這回穩了!
下一篇:監聽adapter里兩個按鈕
