7

我正在研究用于从 NFC 标签读取数据的近场通信。我没有支持 NFC 的 Android Mobile 和 NFC 标签来测试我创建的应用程序。

我想知道是否可以通过意图过滤器启动我的应用程序(应该假设从我的设备检测到 NFC 标签)

我的清单片段:

 <activity
        android:name=".ServerActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.nfc.action.NDEF_DISCOVERED" />

            <category android:name="android.intent.category.DEFAULT" />

            <data
                android:host="abc.com"
                android:pathPrefix="/aaap"
                android:scheme="http" />
        </intent-filter>
    </activity>

我的活动片段:

@Override
protected void onNewIntent(Intent intent) {
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
        Toast.makeText(getApplicationContext(), "ACTION_TAG_DISCOVERED",
                Toast.LENGTH_LONG);
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    }
}
4

3 回答 3

1

我可能完全错过了这里的重点,但据我了解,您基本上想触发一个意图,该意图将被您在清单中声明的​​接收器选择,对吗?您是否尝试过使用该方法设置一个非常简单的测试应用程序来执行此操作sendBroadcast(...)

Intent exampleIntent = new Intent("android.nfc.action.NDEF_DISCOVERED");
sendBroadcast(exampleIntent)

您可以Intent根据您的要求添加任何额外的数据。

于 2012-04-27T09:01:07.613 回答
1

在对 NFC 进行一些研究后,我发现我们可以在没有启用 NFC 的设备的情况下读/写 NFC 标签。但答案很简单。不过就是玩 Intents:

我们必须调用这个片段来调用 NFC:

    final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
    intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, "Custom Messages");
    startActivity(intent);

此外,我们应该通过 Manifest 文件将我们的 Activity 注册到 Android 系统,如下所示:

清单.xml

 <activity
        android:name="TagViewer" >
        <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
 </activity>

同样,如果您有多个使用相同操作的活动,我们将获得选择器,我们可以从中启动我们想要的活动。

接收内部活动:

标记查看器.java

    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(getIntent().getAction())) {
        Log.v("NFC Launched","NFC Launched");           
    }

我们在Developer Sample Demo中有这个示例。

于 2012-05-02T04:54:41.240 回答
0

看看开放式 NFC。他们有一个NFC 模拟器,可能对附加到您的 android 模拟器很有用。从未在 Android 上使用过它,但我在 BlackBerry 模拟器上使用过它。

编辑:
Android ICS 的最新版本 4.4.1 已发布。

于 2012-04-27T08:54:08.930 回答