Условно отключить Android Beam

Этот вопрос в значительной степени является дубликатом, но связанная проблема так и не была решена и Теме несколько месяцев, поэтому я не хотел ее воскрешать.

По умолчанию приложения, работающие на устройстве ICS с включенным Android Beam, отправляют сообщение с Uri приложения, которое будет обработано Google Play на принимающей стороне.

Я пытаюсь разработать действие, которое будет отправлять NdefMessage, если условие A истинно, и в противном случае отключать отправку сообщений. Документация по API для setNdefPushMessage(...) указывает, что это возможно, передав нулевое сообщение:

Передайте нулевое сообщение NDEF, чтобы отключить принудительную передачу NDEF переднего плана в указанных действиях.

Тем не менее, попытка просто запретить все нажатия с помощью следующего кода по-прежнему приводит к появлению пользовательского интерфейса «Touch to Beam» и отправке приложения Uri...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getNfcAdapter().setNdefPushMessage(null, this);
}

Кто-нибудь знает, действительно ли можно отключить толчки из действия? Несколько системных приложений делают это, но мне не удалось найти код, который позволяет это сделать. Любая помощь горячо приветствуется.


person zienkikk    schedule 27.06.2012    source источник


Ответы (1)


Похоже, это ошибка в Android ICS. Хотя в документации говорится, что вы должны иметь возможность отключить его, установив значение null для сообщения NDEF, это просто не работает. Хорошей новостью является то, что это было исправлено и теперь работает в Android 4.1 Jellybean.

person NFC guy    schedule 09.07.2012
comment
Спасибо NFC, парень. У меня было ощущение, что это может быть так. Вы знаете, есть ли планы по переносу исправления на более ранние версии? - person zienkikk; 09.07.2012
comment
Без понятия. Я посмотрел на исходники Android, и ошибка не сразу была очевидна (я не мог ее найти). - person NFC guy; 10.07.2012
comment
@NFCguy Вы уверены, что это было исправлено? Я тестирую это на устройстве 4.1 и не работает. - person Mister Smith; 03.04.2014