Android: modification des paramètres NFC (Marche/Arrêt) par programmation
j'ai essayer de changer NFC paramètres (on/off) par programmation sur Android 2.3.3.
  au téléphone, sous la rubrique "Paramètres réseau et sans fil",  
     
vous pouvez choisir de définir si vous voulez utiliser NFC pour lire et échanger des tags ou non.  
  donc je voudrais basculer ce réglage dans mon application.  
     
Mais je n'arrive pas à trouver une api pour cela.  
je cherche un code qui ressemblerait probablement à ceci:
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled( on/off );
5 réponses
  vous ne pouvez pas tourner on/off manuellement, mais vous pouvez envoyer l'utilisateur aux préférences si elle est  off :  
    if (!nfcForegroundUtil.getNfc().isEnabled())
    {
        Toast.makeText(getApplicationContext(), "Please activate NFC and press Back to return to the application!", Toast.LENGTH_LONG).show();
        startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
    }
  Méthode  getNfc()  renvoie simplement le  nfcadapter  :  
nfc = NfcAdapter.getDefaultAdapter (activité.getApplicationContext ());
  ce n'est pas possible de façon programmatique sans dispositif d'enracinement. 
Mais vous pouvez commencer  NFC Settings Activity par l'action d'intention Settings.ACTION_NFC_SETTINGS  pour le niveau api 16 et au-dessus. Pour l'api < 16 utiliser  Settings.ACTION_WIRELESS_SETTINGS   
  la réponse précédente suggère d'utiliser  WIFI_SETTINGS  mais nous pouvons passer directement à  NFC_SETTINGS   
Voici l'exemple:
android.nfc.NfcAdapter mNfcAdapter= android.nfc.NfcAdapter.getDefaultAdapter(v.getContext());
            if (!mNfcAdapter.isEnabled()) {
                AlertDialog.Builder alertbox = new AlertDialog.Builder(v.getContext());
                alertbox.setTitle("Info");
                alertbox.setMessage(getString(R.string.msg_nfcon));
                alertbox.setPositiveButton("Turn On", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                            Intent intent = new Intent(Settings.ACTION_NFC_SETTINGS);
                            startActivity(intent);
                        } else {
                            Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
                            startActivity(intent);
                        }
                    }
                });
                alertbox.setNegativeButton("Close", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
                alertbox.show();
            }
si vous voulez le faire programmatiquement, apparemment ce Q tient la réponse:
comment activer NFC reader via API?
Modifier
il ne tient pas la réponse, mais la clé de la réponse, sur lequel j'ai basé mon code j'ai répondu dans le Q.
je vais le coller ici aussi au cas où quelqu'un serait intéressé.
j'ai il travaille par la réflexion
ce code fonctionne sur API 15, ne l'ont pas encore vérifié par rapport à d'autres verions
public boolean changeNfcEnabled(Context context, boolean enabled) {
    // Turn NFC on/off
    final boolean desiredState = enabled;
    mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
    if (mNfcAdapter == null) {
        // NFC is not supported
        return false;
    }
    new Thread("toggleNFC") {
        public void run() {
            Log.d(TAG, "Setting NFC enabled state to: " + desiredState);
            boolean success = false;
            Class<?> NfcManagerClass;
            Method setNfcEnabled, setNfcDisabled;
            boolean Nfc;
            if (desiredState) {
                try {
                    NfcManagerClass = Class.forName(mNfcAdapter.getClass().getName());
                    setNfcEnabled   = NfcManagerClass.getDeclaredMethod("enable");
                    setNfcEnabled.setAccessible(true);
                    Nfc             = (Boolean) setNfcEnabled.invoke(mNfcAdapter);
                    success         = Nfc;
                } catch (ClassNotFoundException e) {
                } catch (NoSuchMethodException e) {
                } catch (IllegalArgumentException e) {
                } catch (IllegalAccessException e) {
                } catch (InvocationTargetException e) {
                }
            } else {
                try {
                    NfcManagerClass = Class.forName(mNfcAdapter.getClass().getName());
                    setNfcDisabled  = NfcManagerClass.getDeclaredMethod("disable");
                    setNfcDisabled.setAccessible(true);
                    Nfc             = (Boolean) setNfcDisabled.invoke(mNfcAdapter);
                    success         = Nfc;
                } catch (ClassNotFoundException e) {
                } catch (NoSuchMethodException e) {
                } catch (IllegalArgumentException e) {
                } catch (IllegalAccessException e) {
                } catch (InvocationTargetException e) {
                }
            }
            if (success) {
                Log.d(TAG, "Successfully changed NFC enabled state to "+ desiredState);
            } else {
                Log.w(TAG, "Error setting NFC enabled state to "+ desiredState);
            }
        }
    }.start();
    return false;
}//end method
cela nécessite 2 permissions cependant, mettez-les dans le manifeste:
 <!-- change NFC status toggle -->
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
l'état du bouton NFC change en conséquence lorsque le code est utilisé, il n'y a donc aucun problème lorsque vous le faites manuellement dans le menu seetings.
pour clarifier : ce code ne fonctionne pas sur les appareils normaux. Il y a des solutions, mais au moins cela nécessite la racine .
vous pouvez contrôler les transferts NFC et autres. Mais pour l'instant, l'activer et le désactiver n'est pas possible :(
veuillez vérifier cette URL ci-dessous tout est indiqué pas à pas.
http://ranjithdroid.blogspot.com/2015/11/turn-onoff-android-nfc-by.html