我正在慢慢学习Android。目前我在NFC上,我已经学习了几个教程,我开始更好地了解它是如何工作的以及如何读写标签,我现在可以对我买的那些做什么。 大多数人希望他们的应用程序在接近标签时立即启动,但出于学习目的,我只想在按下按钮时启动发现,换句话说,我想控制发现。 我知道为了让应用程序立即启动,我们在Manifest.xml中实现了过滤器ACTION_NDEF_DISCOVERED 我还读到,只有当我们的应用程序不在前台时才会使用意图过滤。如果我们的应用程序在前台运行,它将不会被通知,因此我们必须使用NFC前台调度。
我无法弄清楚我是如何操纵过滤器和前景的,以便它们只对我点击按钮做出反应。
我的另一个问题是:它是否适用于读取和写入按钮?
有人可以帮忙吗?如果你给我一些代码,请好好解释一下,我真的在学习和理解之后: - )
干杯。
答案 0 :(得分:1)
看看这个名为NDEF工具的库 - link。
我前段时间使用它,在按钮点击时读取和写入NFC标签。看看图书馆和我的代码,然后玩它。
public class NFCReadActivity extends NfcReaderActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_nfc);
// Read the tag, without prompting how/who should read it
setDetecting(true);
}
@Override
protected void readNdefMessage(Message message)
{
if (message != null)
{
// Iterate through all records in message
for (int k = 0; k < message.size(); k++)
{
Record record = message.get(k);
// Get record type (record.getClass().getSimpleName())
if (record instanceof TextRecord)
{
// Get NFC message
String message = ((TextRecord) record).getText();
// Inform user
Crouton.makeText(this, message, Style.CONFIRM).show();
}
}
}
}
// An empty NDEF message was read
@Override
protected void readEmptyNdefMessage()
{
Crouton.makeText(this, getString(R.string.NFC_empty_message), Style.ALERT).show();
}
// Something was read via NFC, but it was not an NDEF message
@Override
protected void readNonNdefMessage()
{
Crouton.makeText(this, getString(R.string.NFC_non_ndef_message), Style.ALERT).show();
}
// NFC feature was found and is currently enabled
@Override
protected void onNfcStateEnabled()
{
}
// NFC feature was found but is currently disabled
@Override
protected void onNfcStateDisabled()
{
Crouton.makeText(this, getString(R.string.NFC_state_disabled), Style.ALERT).show();
new GoToSettingsDialog(this).showNFCSettings();
}
// NFC setting changed since last check. For example, the user enabled NFC in the wireless settings
@Override
protected void onNfcStateChange(boolean enabled)
{
}
// This device does not have NFC hardware
@Override
protected void onNfcFeatureNotFound()
{
Crouton.makeText(this, getString(R.string.NFC_not_found), Style.ALERT).show();
}
}