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 に答える