2

NFCフォーラムで指定されているように、Wifi ProtectedSetupConfigurationを使用してタグに静的ハンドオーバー選択レコードを書き込んでいます。(SSID、暗号化、...)。

タイプはapplication/vnd.wfa.wsc

さらに、Androidアプリケーションレコードを最後のNDEFレコードとしてNDEFメッセージに追加します。

また、AndroidマニフェストXMLでNFCタグ用のフィルターが検出されました。

問題は次のとおりです。アプリケーションが起動され、リーダーアクティビティが表示された場合、タグを読み取ることができ、すべてが正常に機能します。

ここで、次のものが必要です。タグをスキャンし、アクティビティが@フォアグラウンドでないか、起動されていない場合、アプリは自動的に起動し、自動的にリーダーモードに切り替わります。

  1. そうすると、Nexus 4はAARによって起動しません...このレコードをNDEFメッセージの最初の場所に配置すると、起動するだけですが、検出されたNdef / Tech/Tagのイベントを失います。
  2. Androidマニフェストにもフィルターがありますが、これでは何も起こらないようです。3つのイベントすべてを試しましたが、何も起こりません。

また、タグがスキャンされた場合、通常、より多くのアプリケーションがイベントをフィルタリングしている場合、このタグに対して開始するアプリであるアプリセレクターを取得します。しかし、私のアプリケーションはここにリストされていません。

これが私がメッセージを作成する方法です:

new NdefMessage(new NdefRecord[] { Utils.createHandoverSelectRecord(ac_record.toByteArray()), wpsRecord, aarRecord });

そして、これが私のアンドロイドマニフェストのフィルターです:

  <activity android:name=".activities.NFCWriterActivity"></activity>
        <activity android:name=".activities.NFCReaderActivity" android:exported="true" android:permission="android.permission.NFC">
            <intent-filter>
              <action android:name="android.nfc.action.TAG_DISCOVERED"/>
              <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>        
        </activity>
        <activity android:name=".activities.NFCBeamActivity"></activity>
        <activity android:name=".activities.WifiManagerActivity"></activity>
        <activity android:name=".activities.WifiConfiguratorActivity"></activity>
        <activity android:name=".activities.TagWriterOptionsActivity"></activity>
        <activity android:name=".activities.WifiScannerTagActivity"></activity>
        <activity android:name=".activities.WifiScannerActivity"></activity> 
        <activity android:name=".activities.WifiListActivity"></activity>  

        <activity
            android:name=".activities.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
              <action android:name="android.nfc.action.TAG_DISCOVERED"/>
             <!--  <data android:mimeType="application/vnd.wfa.wsc" /> -->
              <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
              <action android:name="android.nfc.action.TECH_DISCOVERED"/>
              <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
            <intent-filter>
              <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
              <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>                                
        </activity>       

    </application>

どこでフィルタリングすればよいかわからないので、Readerアクティビティでフィルタリングするだけで十分だと思いましたが、これは機能しなかったので、MainActivityにもフィルターを追加しましたが、これも何もしません。

あなたが私を助けてくれることを願っています。

ありがとう!

4

1 に答える 1

3

最初の NDEF レコードの MIME タイプと完全に一致するインテント フィルタを追加する必要があります。

<intent-filter>
  <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeType="application/vnd.wfa.wsc" />
</intent-filter>
于 2013-02-02T19:27:43.840 に答える