您好我正在开发使用NFC功能的Android应用程序。在这里,我试图阅读NFC Mifare nfc标签。我使用了android api提供的NFCDemo。但是我没有通过我的应用程序读取数据获得成功。在该演示中,它始终只读取假标签并仅提供假结果。
我对清单文件意图过滤器感到困惑。在我的演示应用程序中就像这样
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.nfc"
>
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
>
<activity android:name=".simulator.FakeTagsActivity"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="TagViewer"
android:theme="@android:style/Theme.NoTitleBar"
>
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="9" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
</manifest>
应用程序总是从FakeTagsActivity活动开始,显示任何伪标签列表。当我们点击任何一个假标签时,它将重定向到TagViewer活动,假数据不是真正的标签数据。 我在TagViewer活动中也有困惑,也就是resolveIntent(Intent intent)总是处理
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {}
但我不明白这是错误的。 请建议我,我需要修改api演示来读取真实的标签数据。或者建议我有其他方法来阅读nfc标签。
我已经尝试This Sample 但对我来说没有帮助。 请帮我。提前谢谢。
答案 0 :(得分:2)
最后,我找到了问题的解决方案。我们需要更新TagViewer活动的intent过滤器,如
<activity android:name="TagViewer"
android:theme="@android:style/Theme.NoTitleBar"
>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
然后我修改了像
这样的TagViewer类的if条件if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {}
现在工作正常。主要问题是TAG检测的优先级 优先级1:NDEF_DISCOVERED 优先级2:TECH_DISCOVERED 优先级3:TAG_DISCOVERED
我为我的应用程序意图过滤器赋予优先级1,然后android系统在检测到标记时始终启动我的活动。
答案 1 :(得分:0)
请检查此处是否有NFC可用a link并尝试阅读标签详细信息a link .......在单独的活动中添加readind标签详细信息代码...(例如:youractivity)并在清单给出
<activity android:name=".youractivity"
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="text/plain"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>