Android 13 getNdefMessage получает значение null после writeMessage ⇐ Android
-
Гость
Android 13 getNdefMessage получает значение null после writeMessage
В Android 13, когда вы записываете необходимое значение и затем получаете его, данные возвращаются как нулевые. В Android 12 возвращается без проблем. Какую часть мне следует редактировать? Когда я посмотрел на изменения между версиями SDK 31 и 33, я не увидел никаких изменений, связанных с NFC. Есть ли какие-то изменения в вопросах, связанных с NFC, при обновлении до 33? Не можете писать и читать на Android 13? Я прочитал статью.
публичный класс TestSensor расширяет AppCompatActivity { частный NfcAdapter nfcAdapter = null; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); пытаться { nfcAdapter = NfcAdapter.getDefaultAdapter(это); } поймать (Исключение е) { е.printStackTrace(); } } @Override общественная недействительность onResume () { супер.онрезюме(); пытаться { если (nfcAdapter!= ноль) { Параметры пакета = новый Bundle(); options.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 250); nfcAdapter.enableReaderMode(this,new NfcReaderClass(), NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_NFC_B | NfcAdapter.FLAG_READER_NFC_F | NfcAdapter.FLAG_READER_NFC_V, параметры); } } поймать (Исключение е) { е.printStackTrace(); } } @Override protected void onNewIntent (намерение намерения) { super.onNewIntent(намерение); } @Override общественная недействительность onPause () { супер.онПауза(); пытаться { если (nfcAdapter!= ноль) { nfcAdapter.disableReaderMode(это); } } поймать (Исключение е) { е.printStackTrace(); } } @Override общественная недействительность onDestroy () { супер.onDestroy(); } } Класс NfcReaderClass реализует NfcAdapter.ReaderCallback { частный тег mTag = null; частный Ndef m_Ndef = null; @Override public void onTagDiscovered (тег тега) { пытаться { если (тег!= ноль){ this.mTag = тег; записьNfcNdef(); } } поймать (Исключение е) { е.printStackTrace(); } } общественная недействительность writeNfcNdef(){ пытаться { this.m_Ndef = Ndef.get(this.mTag); если (this.m_Ndef != ноль){ byte[] info2 = hexStringToByteArray("AA00"); Запись NdefRecord = RecordUtil.makeMimeTypeRecord("app/x-sensor", null, info2); NdefMessage msg = новый NdefMessage (новый NdefRecord [] {запись}); this.m_Ndef.connect(); this.m_Ndef.writeNdefMessage(msg); this.m_Ndef.close(); this.m_Ndef = Ndef.get(this.mTag); this.m_Ndef.connect(); NdefMessage msg1 = this.m_Ndef.getNdefMessage(); Log.e("msg","!!! "+ msg1); } } поймать (Исключение е) { е.printStackTrace(); } } } Я пробовал писать в onNewIntent, а также в onResume. Я также попробовал включитьReaderMode и EnableForegroundDispatch.
В Android 13, когда вы записываете необходимое значение и затем получаете его, данные возвращаются как нулевые. В Android 12 возвращается без проблем. Какую часть мне следует редактировать? Когда я посмотрел на изменения между версиями SDK 31 и 33, я не увидел никаких изменений, связанных с NFC. Есть ли какие-то изменения в вопросах, связанных с NFC, при обновлении до 33? Не можете писать и читать на Android 13? Я прочитал статью.
публичный класс TestSensor расширяет AppCompatActivity { частный NfcAdapter nfcAdapter = null; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); пытаться { nfcAdapter = NfcAdapter.getDefaultAdapter(это); } поймать (Исключение е) { е.printStackTrace(); } } @Override общественная недействительность onResume () { супер.онрезюме(); пытаться { если (nfcAdapter!= ноль) { Параметры пакета = новый Bundle(); options.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 250); nfcAdapter.enableReaderMode(this,new NfcReaderClass(), NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_NFC_B | NfcAdapter.FLAG_READER_NFC_F | NfcAdapter.FLAG_READER_NFC_V, параметры); } } поймать (Исключение е) { е.printStackTrace(); } } @Override protected void onNewIntent (намерение намерения) { super.onNewIntent(намерение); } @Override общественная недействительность onPause () { супер.онПауза(); пытаться { если (nfcAdapter!= ноль) { nfcAdapter.disableReaderMode(это); } } поймать (Исключение е) { е.printStackTrace(); } } @Override общественная недействительность onDestroy () { супер.onDestroy(); } } Класс NfcReaderClass реализует NfcAdapter.ReaderCallback { частный тег mTag = null; частный Ndef m_Ndef = null; @Override public void onTagDiscovered (тег тега) { пытаться { если (тег!= ноль){ this.mTag = тег; записьNfcNdef(); } } поймать (Исключение е) { е.printStackTrace(); } } общественная недействительность writeNfcNdef(){ пытаться { this.m_Ndef = Ndef.get(this.mTag); если (this.m_Ndef != ноль){ byte[] info2 = hexStringToByteArray("AA00"); Запись NdefRecord = RecordUtil.makeMimeTypeRecord("app/x-sensor", null, info2); NdefMessage msg = новый NdefMessage (новый NdefRecord [] {запись}); this.m_Ndef.connect(); this.m_Ndef.writeNdefMessage(msg); this.m_Ndef.close(); this.m_Ndef = Ndef.get(this.mTag); this.m_Ndef.connect(); NdefMessage msg1 = this.m_Ndef.getNdefMessage(); Log.e("msg","!!! "+ msg1); } } поймать (Исключение е) { е.printStackTrace(); } } } Я пробовал писать в onNewIntent, а также в onResume. Я также попробовал включитьReaderMode и EnableForegroundDispatch.
Мобильная версия