Android NFC标签扫描仅触发我的应用程序启动

Android NFC标签扫描仅触发我的应用程序启动,android,nfc,Android,Nfc,我有一个应用程序,可以扫描NFC标签,从标签收集数据并将数据发送到服务器。标签上的数据采用以下格式: 1,3,30012,somebodys name abc|123?? 这些标签放在客户的房子里,供护理人员扫描。每次扫描都会将其记录到通话中 到目前为止,这种方法一直运作良好。我现在的问题是,看护者必须在我们的应用程序旁边使用另一个应用程序,它扫描不同的NFC标签,上面有不同的数据,并将其发送到不同的服务器。此应用程序安装在同一护工的手机上 此其他应用程序将扫描可能包含以下格式数据的NFC标

我有一个应用程序,可以扫描NFC标签,从标签收集数据并将数据发送到服务器。标签上的数据采用以下格式:

1,3,30012,somebodys name
abc|123??
这些标签放在客户的房子里,供护理人员扫描。每次扫描都会将其记录到通话中

到目前为止,这种方法一直运作良好。我现在的问题是,看护者必须在我们的应用程序旁边使用另一个应用程序,它扫描不同的NFC标签,上面有不同的数据,并将其发送到不同的服务器。此应用程序安装在同一护工的手机上

此其他应用程序将扫描可能包含以下格式数据的NFC标签:

1,3,30012,somebodys name
abc|123??
问题是,我如何确保当看护人扫描我们的标签时,只启动我们的应用程序

清单中是否有办法在我的应用程序的意图过滤器中指定此选项

这是我的活动清单中的内容。我知道如果启动了一个意图,并且有2个应用程序可以处理NFC标签,那么就会向用户显示一个列表。Android文档不鼓励这样做

提前谢谢

[编辑] 我注意到一件事,如果手机在主屏幕上,我扫描了一个标签,那么我的应用程序就启动了。如果看护者扫描了正确的标签,这就可以了

<activity android:name=".NfcscannerActivity"
    android:screenOrientation="portrait" >
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.carefreegroup.rr3.QRCODE_ACTION" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />
</activity>

您可以在NDEF消息中创建自定义mimeType,然后创建与之完全匹配的意图过滤器。这意味着您的应用程序将被启动,因为它是最具体的过滤器

例如:

<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/vnd.com.my.app.package.customString" />
</intent-filter>

编辑: 或者,如果您无法创建自定义mimeType,那么您的实用程序可能会创建自定义URL?然后,您可以为自定义url创建筛选器:

<intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
            <data
                android:scheme="http"
                android:host="www.mywebsite.net" 
                android:path="/customPathForAction" />
</intent-filter>


好的,谢谢。在创建标记时,我使用tagwriter应用程序将数据写入标记,并指定“纯文本”。如何将mimetype写入标记,以便我的应用程序可以过滤它?您可以尝试应用程序“NFC工具”。这允许创建自定义类型。@corvairjo Hi我已经下载了该应用程序,但不清楚如何做到这一点。是否单击数据添加自定义记录。然后在内容类型add application/vnd.com.my.app.package.customString?中,我添加了一种使用自定义url的替代方法,以防您无法使用实用程序创建cutom mimeType。请参阅编辑。如果要使用上述形式的“application/vnd.com.my.app.package.customString”,请将“application”放入第一个字段(灰色文本表示“text”),并将“vnd.com.my.app.package.customString”放入第二个字段(灰色文本表示“plain”)。