Eventhough Я до сих пор скучаю некоторые другие результаты отладки из ОП, я думал, что я дам ему выстрелили:
В ходе обсуждения в команды показали, что обратный вызов createNdefMessage
не вызывается при взаимодействии с телефоном WP8, было бы интересно, почему это добавляет и как предотвратить это. К сожалению, у меня нет никаких подробностей о фактическом жизненном цикле активности, поэтому я могу только догадываться, что может пойти не так.
Одна из причин, почему зарегистрированный createNdefMessage
обратного вызова не может быть названа не в том, что деятельность, которая зарегистрирована обратного вызова больше не на переднем плане. Таким образом, может существовать разница между Android-устройством и устройством WP8, которое приводит к приостановке текущей активности.
Другая причина заключается в том, что устройство WP8 прерывает связь до того, как стек Android NFC успел вызвать метод обратного вызова createNdefMessage
. Однако это должно обнаруживаться, поскольку пользовательский интерфейс Beam обычно исчезает до того, как пользователь сможет его щелкнуть.
Одна из причин, по которым может быть причина 1, может заключаться в том, что сам устройство WP8 отправляет сообщение NDEF, которое вызывает обработку намерений на устройстве Android. Если это так, то метод преодоления этой проблемы может заключаться в регистрации для системы диспетчеризации переднего плана. Это предотвратило бы регулярную обработку намерений и напрямую отправило бы все входящие сообщения NDEF в текущую деятельность:
@Override
public void onResume() {
super.onResume();
NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
adapter.enableForegroundDispatch(this, pi, null, null);
}
@Override
public void onNewIntent(Intent intent) {
if (intent != null) {
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action) ||
NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action) ||
NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
Log.d("NdefTest", "This problem was actually caused by an incoming NDEF message.");
}
}
}
Вы еще и прикрепляете AAR к сообщению? Казалось бы, это не так, учитывая ваш код, но это одно, что я знаю о том, что приводит приложения в Play Store из сообщения NFC. – CommonsWare
Я не привязывал AAR, URL-адрес является единственной записью в сообщении. –
можете ли вы показать ссылку, которую вы отправляете на WP8, и что именно появляется в WP8? –