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

#android #nfc

#Android #nfc

Вопрос:

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

Ответ №1:

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

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

Комментарии:

1. итак, если возвращаемое значение равно FALSE, это означает, что устройство не имеет возможности NFC, это правда @userSeven7s?

2. Это неверно. Если значение адаптера равно нулю, устройство не имеет NFC. Объяснение на веб- сайте разработчика

Ответ №2:

Это можно сделать просто с помощью следующего кода:

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

Комментарии:

1. Это более полный ответ, который включает в себя, как направить пользователя в настройки NFC. Спасибо.

Ответ №3:

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

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

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

 nfcAdapter.isNdefPushEnabled()
  

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

Комментарии:

1. Можете ли вы обновить свой ответ, поскольку Google code отключился.

2. Android Beam больше не поддерживается.

Ответ №4:

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

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

Ответ №5:

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

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