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