2015-03-12 3 views
0

Я пытаюсь обнаружить, когда считывается тег NFC. Этот код работает, но не для тега Mifare Classic. Mi не совместим с этой технологией, но я установил приложение (NFC Tools), которое может обнаружить, когда рядом находится тег Mifare Classic. Он не может прочитать сохраненные данные, но мне это не нужно. Мне просто нужно определить событие. Это приложение thrid-party может это сделать, поэтому я уверен, что это возможно, но я не знаю, как это сделать.Android NFC: Намерение при обнаружении любого типа NFC

Это мой код:

private void prepareIntent() { 
     mAdapter = NfcAdapter.getDefaultAdapter(this); 
     if (hasNfcCapabilities()) { 
      mPendingIntent = PendingIntent.getActivity(
        this, 0, new Intent(this, ((Object) this).getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 
      IntentFilter techDiscovered = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); 
      IntentFilter tagDiscovered = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); 
      IntentFilter ndefDiscovered = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); 
      try { 
       techDiscovered.addDataType("*/*"); 
       tagDiscovered.addDataType("*/*"); 
       ndefDiscovered.addDataType("*/*"); 
      } catch (IntentFilter.MalformedMimeTypeException e) { 
       e.printStackTrace(); 
      } 
      mFilters = new IntentFilter[]{techDiscovered, tagDiscovered, ndefDiscovered}; 
      mTechLists = new String[][]{}; 
     } 
    } 

Что мне делать, чтобы обнаружить Mifare Classic теги?

Спасибо.

ответ

0

Решенный! Документация говорит:

enter link description here

фильтрует IntentFilters переопределить диспетчерская для, или нуль, чтобы всегда отправлять

Таким образом, проходя null в параметре фильтров в методе enableForegroundDispatch из NfcAdapter он обнаружит все типы тегов NFC.

mAdapter.enableForegroundDispatch(this, mPendingIntent, null, mTechLists);

Смежные вопросы