Так что, очевидно, нет способа включить NFC из API, даже если Google делает это в своем исходном коде (см. Ниже).
Если вы посмотрите на строку из API для NfcAdapter.isEnabled () :
Вернуть true, если в этом адаптере NFC включены какие-либо функции.
Приложение может использовать это какпомощник, чтобы предложить пользователю включить NFC в настройках.
Если этот метод возвращает false, аппаратное обеспечение NFC гарантированно не генерирует и не отвечает на какие-либо транзакции NFC.
Похоже, что нет способа сделать это в API.Облом.Ваша лучшая ставка - это диалоговое окно, информирующее пользователя о том, что ему нужно включить его в настройках, и, возможно, запустить намерение настройки.
РЕДАКТИРОВАТЬ: Следующее из источника, но выглядиткак будто они не позволяли пользователю реализовывать методы в API (я запутался в этом).
Я нашел это из исходного кода Android , чтобы помочь включить и отключитьадаптер.
Соответствующий источник:
public boolean onPreferenceChange(Preference preference,
Object value) {
// Turn NFC on/off
final boolean desiredState = (Boolean) value;
mCheckbox.setEnabled(false);
// Start async update of the NFC adapter state, as the API is
// unfortunately blocking...
new Thread("toggleNFC") {
public void run() {
Log.d(TAG, "Setting NFC enabled state to: "
+ desiredState);
boolean success = false;
if (desiredState) {
success = mNfcAdapter.enable();
} else {
success = mNfcAdapter.disable();
}
if (success) {
Log.d(TAG,
"Successfully changed NFC enabled state to "
+ desiredState);
mHandler.post(new Runnable() {
public void run() {
handleNfcStateChanged(desiredState);
}
});
} else {
Log.w(TAG, "Error setting NFC enabled state to "
+ desiredState);
mHandler.post(new Runnable() {
public void run() {
mCheckbox.setEnabled(true);
mCheckbox
.setSummary(R.string.nfc_toggle_error);
}
});
}
}
}.start();
return false;
}