【发布时间】:2013-02-02 12:28:51
【问题描述】:
我正在使用 NFC 论坛中指定的 Wifi 保护设置配置在标签上编写静态切换选择记录。 (SSID、加密……)。
类型是application/vnd.wfa.wsc
此外,我将 Android 应用程序记录作为最后一个 NDEF 记录添加到我的 NDEF 消息中。
我还在我的 Android 清单 XML 中定义了一个过滤器,用于发现 NFC 标签。
问题是:如果启动了应用程序并显示了 Reader Activity,我可以读取标签并且一切正常。
现在我想要以下内容: 如果我扫描我的标签,并且活动不是@foreground 或未启动,则应用程序应自行启动并自动切换到阅读器模式。
- 如果我这样做了,AAR 不会启动 Nexus 4... 如果我将此记录放在 NDEF 消息的第一位,它只是开始,但随后我失去了 Ndef/Tech 的事件/发现标签。
- 我的 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 中添加了过滤器,但这也没有任何作用。
希望你能帮助我。
谢谢!
【问题讨论】:
标签: android nfc intentfilter android-applicationrecord