我正在开展近场通信,以便从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);
}
}
答案 0 :(得分:1)
看看Open NFC。他们有一个NFC simulator,可以附加到你的Android模拟器。从未在Android上使用它,但我已将其与BlackBerry模拟器一起使用。
答案 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中提供了此示例。