假NFC(近场通信)发布的可能性

时间:2012-04-27 07:56:07

标签: android android-activity android-intent nfc

我正在开展近场通信,以便从NFC标签中读取数据。 我没有支持NFC的Android移动和NFC标签来测试我创建的应用程序。

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

My Manifest Snippet:

 <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);
    }
}

3 个答案:

答案 0 :(得分:1)

看看Open NFC。他们有一个NFC simulator,可以附加到你的Android模拟器。从未在Android上使用它,但我已将其与BlackBerry模拟器一起使用。

编辑:
Last version 4.4.1 for Android ICS released.

答案 1 :(得分:1)

我可能完全忽略了这一点,但从我的理解,你基本上想要发射一个意图,这个意图会被你在清单中声明的​​接收者选中,对吧?您是否尝试使用sendBroadcast(...)方法设置非常简单的测试应用程序?

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

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

答案 2 :(得分:0)

经过对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系统,如下所示:

<强>的Manifest.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>

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

接收内部活动:

TagViewer .java

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

我们在Developer Sample Demo中提供了此示例。