Как проверить, включен ли NFC или нет в андроиде? - PullRequest
29 голосов
/ 01 октября 2011

Как я могу проверить, включен ли NFC программно или нет?Есть ли способ включить NFC на устройстве из моей программы?Пожалуйста, помогите мне

Ответы [ 5 ]

54 голосов
/ 01 октября 2011
NfcManager manager = (NfcManager) context.getSystemService(Context.NFC_SERVICE);
NfcAdapter adapter = manager.getDefaultAdapter();
if (adapter != null && adapter.isEnabled()) {
    // adapter exists and is enabled.
}

Вы не можете включить NFC программно.Пользователь должен сделать это вручную через настройки или аппаратную кнопку.

7 голосов
/ 20 апреля 2013

Я могу немного опоздать, но я реализовал «полный» пример с обнаружением

  1. возможность NFC (аппаратная) и
  2. Исходное состояние NFC (включено или отключено в настройках) и
  3. Изменения в состоянии

Я также добавил соответствующий * Beam пример , который использует

nfcAdapter.isNdefPushEnabled()

метод, введенный в более поздних версиях Android для определения состояния луча, как в 2) и 3).

7 голосов
/ 01 октября 2011

Используйте PackageManager и hasSystemFeature("android.hardware.nfc"), соответствующие элементу <uses-feature android:name="android.hardware.nfc" android:required="false" />, который должен быть в вашем манифесте.

Начиная с 2.3.3, вы также можете использовать NfcAdapter.getDefaultAdapter(), чтобы получить адаптер (если имеется) и вызвать его метод isEnabled(), чтобы проверить, включен ли в настоящее время NFC.

1 голос
/ 18 сентября 2018

Это можно сделать, просто используя следующий код:

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
}

Помните, что пользователь может отключить NFC даже при использовании вашего приложения.

Источник: https://developer.android.com/guide/topics/connectivity/nfc/nfc#manifest

Хотя вы не можете программно включить NFC самостоятельно, вы можете попросить пользователя включить его, нажав кнопку, чтобы открыть настройки NFC следующим образом:

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 голосов
/ 22 апреля 2014
mNfcAdapter = NfcAdapter.getDefaultAdapter(this.getApplicationContext());
    try {
        if (mNfcAdapter != null) {
            result = true;
        }
    }

Мы можем проверить, используя NfcAdapter с контекстом.

...