Verberg “NFC TAG Type niet ondersteund” Fout op Samsung Galaxy-apparaten

Ik werk aan een app die alleen de UID van Mifare Classic-kaarten scant om aanwezigheidsregistratie te vergemakkelijken. Ik heb het aan het werk. Echter, elke keer dat ik een kaart op mijn Galaxy S4 scan, krijg ik een toast met vermelding van “NFC TAG-type dat niet wordt ondersteund”.

Ik wil dat bericht blokkeren of verbergen terwijl de app open is.

Ik heb gemerkt dat er Een andere vraag vragen om hetzelfde op een Galaxy S6, maar het was eenmaal gestemd en vervolgens genegeerd.

Ik vond Dit gesprek op het Samsung-ontwikkelaars-forum, ik kon echter geen antwoord uithalen van wat er is geschreven:

 if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
      myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
      tagID = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
      alertDialog.dismiss(); 

Het lijkt op de alertDialog.dismiss()sectie is wat ik nodig heb, maar er is geen verklaring voor waar ze de alertDialogobject van.

hebben


Antwoord 1, Autoriteit 100%

Vóór Android 4.4

Wat u probeert te doen is gewoon niet mogelijk vanuit een app (tenminste niet op een niet-geroot/niet-aangepast apparaat). Het bericht “NFC-tagtype niet ondersteund” wordt weergegeven door het Android-systeem (of meer specifiek de NFC-systeemservice) vóór en in plaats van de tag naar uw app te verzenden. Dit betekent dat de NFC-systeemservice MIFARE Classic-tags filtert en er nooit een app over informeert. Bijgevolg kan uw app geen MIFARE Classic-tags detecteren of dat pop-upbericht omzeilen.

Op een geroot apparaat kunt u het bericht mogelijk omzeilen met een van beide

  1. Xposed om het gedrag van de NFC-service te wijzigen, of
  2. de configuratiebestanden van de CSC-functie (Consumer Software Customization) op de systeempartitie (zie /system/csc/. De NFC-systeemservice schakelt de pop-up uit en verzendt MIFARE Classic-tags naar apps als de CSC-functie <CscFeature_NFC_EnableSecurityPromptPopup>is ingesteld op elke waarde behalve “mifareclassic” of “all”. U kunt bijvoorbeeld het volgende gebruiken:

    <CscFeature_NFC_EnableSecurityPromptPopup>NONE</CscFeature_NFC_EnableSecurityPromptPopup>
    

    U zou dit item bijvoorbeeld kunnen toevoegen aan het bestand “/system/csc/others.xml” (in de sectie <FeatureSet> ... </FeatureSet>die al bestaat in dat bestand).

Sinds je om de Galaxy S6 hebt gevraagd (de vraag die je hebt gelinkt) heb ik deze methode getest op de S4 toen deze uitkwam. Ik heb niet gecontroleerd of dit nog steeds werkt in de nieuwste firmware of op andere apparaten (bijvoorbeeld de S6).

Sinds Android 4.4

Dit is puur gissen, maar volgens deze(link niet meer beschikbaar), lijkt het erop dat sommige apps (bijv. NXP TagInfo) zijnin staat om MIFARE Classic-tags te detecteren op getroffen Samsung-apparaten sinds Android 4.4. Dit kan betekenen dat apps op de voorgrond die pop-up kunnen omzeilen met behulp van de reader-mode API (zie NfcAdapter.enableReaderMode) mogelijk in combinatie met NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK.

Other episodes