2011-10-01 16 views

Odpowiedz

49
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE); 
NfcAdapter adapter = manager.getDefaultAdapter(); 
if (adapter != null && adapter.isEnabled()) { 
    // adapter exists and is enabled. 
} 

Nie można włączyć NFC programowo. Użytkownik musi to zrobić ręcznie za pomocą ustawień lub przycisku sprzętowego.

+0

, więc jeśli zwrócona wartość jest FAŁSZ, oznacza to, że urządzenie nie ma możliwości NFC, czy to prawda @ userSeven7s? – gumuruh

+0

To nie jest poprawne. Jeśli adapter ma wartość NULL, urządzenie nie ma funkcji NFC. Wyjaśnienie na [Witryna programisty] (http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#manifest) – Marko

7

Użyj PackageManager i hasSystemFeature("android.hardware.nfc"), dopasowując element <uses-feature android:name="android.hardware.nfc" android:required="false" />, który powinieneś mieć w swoim manifeście.

Od wersji 2.3.3 można również użyć NfcAdapter.getDefaultAdapter(), aby uzyskać adapter (jeśli jest dostępny) i wywołać jego metodę isEnabled(), aby sprawdzić, czy funkcja NFC jest aktualnie włączona.

+0

kod, proszę @Ahsan – gumuruh

6

mogę być trochę późno tutaj, ale zostały wdrożone 'kompletna' example z detekcją

  1. NFC możliwości (hardware) i
  2. stanu początkowego NFC (włączone lub wyłączone w ustawieniach) i
  3. Zmiany stanu

Dodałem również odpowiedni Beam example który wykorzystuje

nfcAdapter.isNdefPushEnabled() 

metoda wprowadzona w późniejszych wersjach systemu Android do wykrywania stanu wiązki jak w 2) i 3).

0
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext()); 
    try { 
     if (mNfcAdapter != null) { 
      result = true; 
     } 
    } 

Możemy zweryfikować za pomocą NfcAdapter z kontekstem.

Powiązane problemy