当我扫描nfc标签时,我的android应用程序不是默认应用程序之一

时间:2013-01-02 16:02:46

标签: android nfc

我的意图过滤器有问题。

我想编写一个可以读取android提供的所有nfc标签的应用程序,我不明白为什么我扫描标签时系统看不到我的应用程序...确实,系统为我提供了可能性启动我已安装的其他应用程序但不启动我的应用程序。

这是我的manifest.xml:

<uses-permission android:name="android.permission.NFC" />

<uses-feature
    android:name="android.hardware.nfc"
    android:required="true" />
<application 
...
   <activity
        android:name=".read.ReadActivity"
        android:label="NfcSamples" 
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.nfc.action.TECH_DISCOVERED" />
        </intent-filter>
        <meta-data
            android:name="android.nfc.action.TECH_DISCOVERED"
            android:resource="@xml/filter_nfc" />
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED" />

        </intent-filter>
    </activity>
</application>

我确切地说,我不想启动特定标签,而是阅读所有可用的标签。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

这是我读取/编写/验证Mifare Classic / Ultralight / Desfire / DesfireEV1标签的项目的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="nfcapp.app"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-permission android:name="android.permission.NFC"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name="nfcapp.app.NFCAppActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Handle notes detected from outside our application -->
        <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="android.nfc.action.TAG_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

</application>

希望它有所帮助。

答案 1 :(得分:0)

你想做什么,根本不可能。 Android使用最匹配的特定意图过滤器启动应用程序。因此,通常情况下,通常会有一个应用程序具有更具体的意图过滤器(例如完整的URL)匹配,以便启动应用程序而不是您的应用程序。