Intereting Posts
Как вызвать publishInstall () в графике facebook api android Специфические параметры в запросе GET API REST Зачем использовать фрагменты? Как удалить элементы из списка с помощью жестов, как в gmail Как читать и писать теги Android NFC? Android: Mediaplayer: как использовать SurfaceView или медиаплеер для воспроизведения видео в правильном размере Кратко сокрытие ActionBar без изменения размера Как интегрировать paypal пожертвовать в Android-приложение? Как правильно позвонить в свой веб-сервис PHP с помощью ksoap2-android? Как динамически удалять элементы из списка ListView при нажатии кнопки? Кнопка выбора фона Как отправить JSon как BODY В запросе POST на сервер из приложения Android? Устанавливать программный вариант с возможностью рисования Android-калькулятор для BMS для WMS getFeatureInfo Как отключить сообщение тоста для тостов, которое иногда появляется с помощью элементов управления масштабированием в WebView?

Как включить NFC-считыватель через API?

Есть ли способ включить Android NFC-считыватель с помощью API?

Solutions Collecting From Web of "Как включить NFC-считыватель через API?"

Поэтому, по-видимому, нет способа включить NFC из API, хотя Google делает это в своем исходном коде (см. Ниже).

Если вы посмотрите на строку из API для NfcAdapter.isEnabled () :

Верните true, если этот адаптер NFC имеет какие-либо функции.

Приложение может использовать это как помощник, чтобы предположить, что пользователь должен включить NFC в настройках.

Если этот метод возвращает false, аппаратное обеспечение NFC гарантировано не генерирует или не реагирует на какие-либо транзакции NFC.

Похоже, что нет никакого способа сделать это в API. Облом. Лучше всего это диалог, чтобы сообщить пользователю, что им нужно включить его в настройках, и, возможно, запустить настройку настроек.

EDIT: Ниже приведен источник, но похоже, что они не позволяли пользователю реализовывать методы в 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; } 

Я получил это через размышления

Этот код работает на API 15, еще не проверял его на других версиях

 public boolean changeNfcEnabled(Context context, boolean enabled) { // Turn NFC on/off final boolean desiredState = enabled; mNfcAdapter = NfcAdapter.getDefaultAdapter(context); if (mNfcAdapter == null) { // NFC is not supported return false; } new Thread("toggleNFC") { public void run() { Log.d(TAG, "Setting NFC enabled state to: " + desiredState); boolean success = false; Class<?> NfcManagerClass; Method setNfcEnabled, setNfcDisabled; boolean Nfc; if (desiredState) { try { NfcManagerClass = Class.forName(mNfcAdapter.getClass().getName()); setNfcEnabled = NfcManagerClass.getDeclaredMethod("enable"); setNfcEnabled.setAccessible(true); Nfc = (Boolean) setNfcEnabled.invoke(mNfcAdapter); success = Nfc; } catch (ClassNotFoundException e) { } catch (NoSuchMethodException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } } else { try { NfcManagerClass = Class.forName(mNfcAdapter.getClass().getName()); setNfcDisabled = NfcManagerClass.getDeclaredMethod("disable"); setNfcDisabled.setAccessible(true); Nfc = (Boolean) setNfcDisabled.invoke(mNfcAdapter); success = Nfc; } catch (ClassNotFoundException e) { } catch (NoSuchMethodException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } } if (success) { Log.d(TAG, "Successfully changed NFC enabled state to "+ desiredState); } else { Log.w(TAG, "Error setting NFC enabled state to "+ desiredState); } } }.start(); return false; }//end method 

Для этого требуется 2 разрешения, поместите их в манифест:

  <!-- change NFC status toggle --> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> 

Состояние кнопки кнопки NFC соответственно переключается, когда используется код, поэтому при его выполнении вручную в меню seetings нет проблем.

Если вы видите исходный код приложения NfcService, есть файл интерфейса INfcAdapter.aidl. В файле есть два API: «boolean enable ()» и «boolean disable ()». Вы можете напрямую использовать этот API для включения и отключения NfcService через приложение Android. Но трюк здесь заключается в том, что вы не можете скомпилировать код с помощью SDK, предоставляемого Android. Вы должны скомпилировать приложение, используя make-файл. Я успешно создаю приложение.

Я надеюсь, что этот форум поможет вам решить эту проблему, а также получить четкое представление об API-интерфейсах API-интерфейсов NFC.

http://ranjithdroid.blogspot.com/2015/11/turn-onoff-android-nfc-by.html