|
Модераторы: javastic |
|
aquamakc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.1.2017 Репутация: нет Всего: нет |
Доброго времени суток.
Пытаюсь по мунуалам читать NFC метку. Запускаюсь на устройстве на 6 андройде. NFC адаптер включен. private NfcAdapter adapter; private Tag myTag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.NFC)) ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.NFC}, 1); if (!ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.BIND_NFC_SERVICE)) ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BIND_NFC_SERVICE}, 1); client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build(); adapter = NfcAdapter.getDefaultAdapter(this); if (adapter == null) { log.setText("Bad adapter"); finish(); } readFromIntent(getIntent()); IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); tagDetected.addCategory(Intent.CATEGORY_DEFAULT); } @Override protected void onNewIntent(Intent intent) { setIntent(intent); readFromIntent(intent); if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){ myTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); } } private void readFromIntent(Intent intent) { String action = intent.getAction(); if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action) || NfcAdapter.ACTION_TECH_DISCOVERED.equals(action) || NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) { Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); /* полезные действия */ } } Файл манифеста: <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> При контакте с NFC устройством ничего не происходит, даже не срабатывает точка останова в onNewIntent. Такое ощущение, что что-то я пропустил, но не могу найти различия между моим кодом и кодом в статьях "на тему". |
|||
|
||||
Felan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Активити не всегда получает NewIntent. Для этого она должна быть запущена с определенным флагом, типа SingleTop. Не увидел в каком режиме активити запускается, так что в качестве предположения.
PS: Код форматируй, а то читать невозможно. Это сообщение отредактировал(а) Felan - 12.1.2017, 19:00 -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
aquamakc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 12.1.2017 Репутация: нет Всего: нет |
Felan,
Метка есть. Ситуация сейчас такая: установлено несколько программ для чтения NFC. Включая мою. При контакте с NFC устройством. ОС предлагает выбор этих программ. 2 другие читают метку. При выборе моей она открывается, но метку не считывает. И, даже, если она уже запущена - всё-равно открывается список программ. |
|||
|
||||
Felan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: нет Всего: 7 |
Ну тогда даже не знаю. Попробуй вот тут почитать. Прям готовый пример практически. Смотри фореграунд чтение.
Может неправильное событие, может неправильный формат метки. Некоторое содержимое NDEF меток нельзя перехватить. Ну по крайней мере мне не удалось. Если записан URL то телефон всегда предлагает выбор приложений. Попробуй записать сначала что-нибудь свое сторонней программой, потом уже читать. Метка точно доступна для чтения? -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Android | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |