【问题标题】:Cannot get Ndef Message from NdefFormatable object无法从 NdefFormatable 对象获取 Ndef 消息
【发布时间】:2021-06-03 14:18:04
【问题描述】:

下面readData方法的目的是返回NDEF消息,标签是否支持NDEF格式或“NDEF Formatable”。

class WritableTag (tag: Tag) {
    private val NDEF = Ndef::class.java.canonicalName
    private val NDEF_FORMATABLE = NdefFormatable::class.java.canonicalName

    private val ndef: Ndef?
    private val ndefFormatable: NdefFormatable?

    val tagId: String?
        get() {
            if (ndef != null) {
                return Tools.byteArrayToHex(ndef.tag.id)
            } else if (ndefFormatable != null) {
                return Tools.byteArrayToHex(ndefFormatable.tag.id)
            }
            return null
        }

    init {
        val technologies = tag.techList
        val tagTechs = Arrays.asList(*technologies)
        if (tagTechs.contains(NDEF)) {
            Log.i("WritableTag", "contains ndef")
            ndef = Ndef.get(tag)
            ndefFormatable = null
        } else if (tagTechs.contains(NDEF_FORMATABLE)) {
            Log.i("WritableTag", "contains ndef_formatable")
            ndefFormatable = NdefFormatable.get(tag)
            ndef = null
        } else {
            throw FormatException("Tag doesn't support ndef")
        }
    }

    fun readData(): NdefMessage {
        if (ndef != null) {
            ndef.connect()
            if (ndef.isConnected) {
                return ndef.ndefMessage
            }
        } else if (ndefFormatable != null) {
            ndefFormatable.connect()
            if (ndefFormatable.isConnected) {
                return ndefFormatable.ndefMessage // Unresolved reference: ndefMessage
            }
        }
        throw Exception("Cannot read ndef message")
    }
}

我可以从ndef 标记中获取ndefMessage,但不能从ndefFormatable 标记中获取。这怎么可能?

【问题讨论】:

    标签: android nfc ndef


    【解决方案1】:

    因为ndefFormatable标签的状态不适合存储ndefMessages,所以需要格式化存储ndefMessages。

    无法从ndefFormatable 标签中读取ndefMessage,它基本上是一张空白卡片,表明它可以存储ndefMessage,如果它被设置为存储它们。

    你所能做的就是format它然后writendefMessage

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 2020-09-13
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多