web-dev-qa-db-fra.com

Comment vérifier si NFC est activé ou pas dans Android?

Comment puis-je vérifier si NFC est activé ou non par programme? Est-il possible d'activer le NFC sur le périphérique à partir de mon programme? Aidez-moi, s'il vous plaît

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

Vous ne pouvez pas activer le NFC par programmation. L'utilisateur doit le faire manuellement via les paramètres ou le bouton matériel.

54
Ronnie

Je suis peut-être un peu en retard ici, mais j’ai implémenté un 'complet' exemple avec détection de 

  1. Capacité NFC (matériel), et 
  2. Etat initial NFC (activé ou désactivé dans les paramètres), et
  3. Changement d'état

J'ai également ajouté un faisceau exemple correspondant qui utilise le 

nfcAdapter.isNdefPushEnabled()

méthode introduite dans les versions ultérieures d’Android pour détecter l’état du faisceau, comme en 2) et 3).

7
ThomasRS

Utilisez PackageManager et hasSystemFeature("Android.hardware.nfc"), correspondant à l'élément <uses-feature Android:name="Android.hardware.nfc" Android:required="false" /> que vous devriez avoir dans votre manifeste. 

Depuis la version 2.3.3, vous pouvez également utiliser NfcAdapter.getDefaultAdapter() pour obtenir l'adaptateur (le cas échéant) et appeler sa méthode isEnabled() pour vérifier si NFC est actuellement activé. 

7
Ahsan

Cela peut être fait simplement en utilisant le code suivant:

NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);

if (nfcAdapter == null) {
    // NFC is not available for device
} else if (!nfcAdapter.isEnabled()) {
    // NFC is available for device but not enabled
} else {
    // NFC is enabled
}

N'oubliez pas que l'utilisateur peut désactiver NFC, même s'il utilise votre application.

Source: https://developer.Android.com/guide/topics/connectivity/nfc/nfc#manifest

Bien que vous ne puissiez pas activer vous-même le programme NFC, vous pouvez demander à l'utilisateur de l'activer en disposant d'un bouton permettant d'ouvrir les paramètres NFC comme suit:

Intent intent
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    intent = new Intent(Settings.ACTION_NFC_SETTINGS);
} else {
    Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
}

startActivity(intent);
0
Yahya Uddin