1

Эй там StackOverflowers ...NDEF Фильтр намерений не запускается приложение в Android 6 и 7

Я поддерживаю приложения, которые имеют NFC чтения функциональные возможности и требует, чтобы открыть приложение путем сканирования метки NFC. Он отлично работает на 4.3 и все версии 4.X android.nfc.action.NDEF_DISCOVEREDintent-filter.

Так что URL выглядит так: http://www.example.com/nfc/NFC00000001

И я прочитал почти все возможные связанный ответ о NFC умысел фильтра.

Я могу получить тег NFC через код, если активность открыта, но это не то, что мне нужно.

читатель приложений NFC показывают, что мой тег

NXP MIFARE Ultralight (Ultralight C) - NTAG213

И что он поддерживает

NFCA, MifareUltralight, ЦНК

Не работает над Android 6 (Nexus 4), Android 6 (OnePlus 3) и Andorid 7.1.1 (Nexus 6P). У меня нет других устройств Android 6 и 7, поэтому я не могу проверить на Android 5.

Я попытался с и без android.nfc.action.TECH_DISCOVERED

Я попробовал почти все возможные опции и это мой последний подход, который не работает слишком (приложение не запущена).

<activity 
android:name=".activities.QRActivity" 
android:launchMode="singleInstance" 
android:screenOrientation="portrait"> 

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:pathPattern="/nfc/..*" 
     android:scheme="http" /> 
</intent-filter> 

<intent-filter> 
    <action android:name="android.nfc.action.TECH_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:pathPattern="/nfc/..*" 
     android:scheme="http" /> 
</intent-filter> 

<meta-data 
    android:name="android.nfc.action.TECH_DISCOVERED" 
    android:resource="@xml/nfc_tech_filter" /> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 

    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 

    <data 
     android:host="www.example.com" 
     android:pathPattern="/nfc/..*" 
     android:scheme="http" /> 
</intent-filter> 

Мой технологии файл выглядит так:

<?xml version="1.0" encoding="UTF-8"?> 
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> 
    <tech-list> 
     <tech>android.nfc.tech.NfcA</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcB</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcF</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcV</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.IsoDep</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.MifareClassic</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.MifareUltralight</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NdefFormatable</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.Ndef</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.NfcBarcode</tech> 
    </tech-list> 
    <tech-list> 
     <tech>android.nfc.tech.Ndef</tech> 
     <tech>android.nfc.tech.NfcA</tech> 
     <tech>android.nfc.tech.MifareUltralight</tech> 
    </tech-list> 
</resources> 

Я также попытался:

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:pathPattern="\\/nfc/..*" 
     android:scheme="http" /> 
</intent-filter> 

И:

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:pathPattern="/nfc/.*" 
     android:scheme="http" /> 
</intent-filter> 

И даже:

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:scheme="http" /> 
</intent-filter> 

И:

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 

    <data 
     android:host="www.example.com" 
     android:pathPrefix="/nfc" 
     android:scheme="http" /> 
</intent-filter> 

Если кто-то есть несколько советов, как сделать его работу или дать объяснение, почему это не возможно, будет понятно :)

+0

Вы проверили, что запись с URL правильно написано в теге? Такие вещи, как набор символов ... – corvairjo

+0

Да, когда моя активность открыта, она читает: http://www.example.com/nfc/NFC00000001, но приложение не запускается в одиночку, если мое приложение не открывается. PS http-протокол не отображается в stackoverflow lol –

+0

Я понял эту часть. Я бы проверил (например, приложение NFC Taginfo), какие данные на самом деле находятся в теге. – corvairjo

ответ

0

Я чувствую, что проблема может заключаться в том, как вы устанавливаете свой pathPattern.

Вы еще не пробовали android:pathPattern="\/nfc/.*"?

http://bluefletch.com/blog/android-nfc-reading-tags/

+0

славная попытка, но эта тоже не работает :(просто попробовал ... Надеюсь, проблема в шаблоне, или я застрял в отсутствии функциональности для Android 6 и 7 –