Android将ID写入空NFC标签

时间:2016-07-30 04:01:07

标签: android tags nfc

我制作了一个读取NFC标签的应用程序,但我面临的问题是并非所有乐队都有ID。

是否可以为空标记分配新ID?

$ which curl
/usr/bin/curl

的Manifest.xml

private String tagInfoId = "";
private NfcAdapter nfcAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog_player);
    if (!userPrefs.isLoggedIn().get()) finish();
    trackerService = ServiceGateway.createAuthorizedService(TrackerService.class);

    nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    if (nfcAdapter == null) {
        Toast.makeText(this,
                "NFC NOT supported on this devices!",
                Toast.LENGTH_LONG).show();
        finish();
    } else if (!nfcAdapter.isEnabled()) {
        Toast.makeText(this,
                "NFC NOT Enabled!",
                Toast.LENGTH_LONG).show();
        finish();
    }
}

@Override
protected void onResume() {
    super.onResume();

    Intent intent = getIntent();
    String action = intent.getAction();
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        if (tag == null) {
            Log.d(TAG, "tag == null");

            //here is possible to write a new tag code ???

        } else {
            byte[] tagId = tag.getId();
            for (int i = 0; i < tagId.length; i++) {
                tagInfoId += Integer.toHexString(tagId[i] & 0xFF);
            }
            Log.d(TAG, "onResume() called with: " + "tagID:" + tagInfoId);

        }
    }
}

另外,如果我为新标签分配ID,它会以相同的方式读取它还是我必须更改上面的代码?

1 个答案:

答案 0 :(得分:0)

对于NFC意图,意图额外TAG永远不应为空(或null)。因此,您应始终从Tag获取intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)对象,并且您永远不应该分支到if (tag == null) {

如果您仍然到达tag == null分支,那么这与没有标识符的标记无关。这意味着您的设备的NFC堆栈中出现了严重错误。例如,这可能是标签读取在很早的阶段被中断,或者标签没有正确地说出读者期望的协议。由于您没有收到Tag个对象,因此也无法与标记进行通信。

因此,你无能为力。您只能尝试重新读取标签(通过手机重新标记)。