Как проверить, включен ли NFC в android или нет?


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

5 24

5 ответов:

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

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

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

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

Возможно, я немного опоздал, но я реализовал "полный" пример с обнаружением

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

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

nfcAdapter.isNdefPushEnabled()

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

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

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

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

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);