1

我的意图过滤器有问题。

我想编写一个可以读取 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>

我确切地说我不想发布具体标签,而是阅读所有可用的标签。

我错过了什么?

4

2 回答 2

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>

希望能帮助到你。

于 2013-01-18T15:41:13.577 回答
0

你想做的事,根本不可能。Android 使用匹配的最具体的意图过滤器启动应用程序。因此,一般来说,通常会有一个应用程序具有匹配的更具体的意图过滤器(例如完整的 URL),因此将启动该应用程序而不是您的应用程序。

于 2013-01-03T09:06:34.227 回答