#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:
Возможно, я немного опоздал, но я реализовал «полный» пример с обнаружением
- Возможности NFC (аппаратные средства) и
- Начальное состояние NFC (включено или отключено в настройках), и
- Изменения состояния
Я также добавил соответствующий пример 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 с контекстом.