Comment vérifier si NFC est activé ou non sur android?
Comment puis-je vérifier si NFC est activé ou non par programmation? Y a-t-il un moyen d'activer le NFC sur le périphérique de mon programme? S'il vous plaît aidez-moi
5 réponses
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 de manière programmatique. L'utilisateur a le faire manuellement via les paramètres ou bouton matériel.
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 2.3.3 vous pouvez également utiliser NfcAdapter.getDefaultAdapter()
pour obtenir l'adaptateur (si disponible) et appeler sa méthode isEnabled()
pour vérifier si NFC est actuellement activé.
je suis peut-être un peu en retard ici, mais j'ai mis en place un "complet" "exemple avec détection de
- NFC (matériel), et de
- état initial NFC (activé ou désactivé dans les paramètres), et
- les Changements de l'état
j'ai aussi ajouté un faisceau correspondant exemple 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).
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext());
try {
if (mNfcAdapter != null) {
result = true;
}
}
nous pouvons vérifier en utilisant NfcAdapter avec le contexte.
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
}
rappelez-vous que l'utilisateur peut désactiver NFC, même en utilisant votre application.
Source: https://developer.android.com/guide/topics/connectivity/nfc/nfc#manifest
bien que vous ne puissiez pas programmer NFC vous-même, vous pouvez demander à l'utilisateur de l'activer en ayant un bouton pour ouvrir les paramètres NFC comme ceci:
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);