2

我正在使用 NFC 论坛中指定的 Wifi 保护设置配置在标签上编写静态切换选择记录。(SSID,加密,...)。

类型是application/vnd.wfa.wsc

此外,我将 Android 应用程序记录作为最后一个 NDEF 记录添加到我的 NDEF 消息中。

我还在我的 Android Manifest XML 中为发现的 NFC 标签定义了一个过滤器。

问题是:如果启动了应用程序并显示了 Reader Activity,我可以读取标签并且一切正常。

现在我想要以下内容:如果我扫描我的标签,并且活动不是@foreground 或未启动,则应用程序应该自行启动并自动切换到阅读器模式。

  1. 如果我这样做,则 AAR 不会启动 Nexus 4……如果我将此记录放在 NDEF 消息的第一位,它就会启动,但随后我会丢失 Ndef/Tech/Tag 发现的事件.
  2. 我的android清单中也有过滤器,但这似乎没有做任何事情,我尝试了所有三个事件但没有任何反应

此外,如果标签被扫描,通常如果更多应用程序正在过滤事件,我会得到一个应用程序选择器,我想为此标签启动哪个应用程序。但是我的申请没有在这里列出。

这就是我创建消息的方式:

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

这是我的android清单中的过滤器:

  <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 Activity 中过滤就足够了,但这不起作用,所以我也在 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 回答