你可以尝试以下代码示例来解决此问题:
首先,确保你已经在应用程序中声明了NFC权限:
然后,在你的活动中使用以下代码示例来启动NFC:
private NfcAdapter mNfcAdapter;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// 获取NfcAdapter
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
// 检查设备是否支持NFC功能
if (mNfcAdapter == null) {
Toast.makeText(this, "设备不支持NFC功能", Toast.LENGTH_LONG).show();
return;
}
// 检查设备是否已启用NFC功能
if (!mNfcAdapter.isEnabled()) {
Toast.makeText(this, "请在设备设置中启用NFC功能", Toast.LENGTH_LONG).show();
return;
}
// 启动NFC
mNfcAdapter.enableForegroundDispatch(this, PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0), null, null);
}
@Override protected void onResume() { super.onResume();
// 如果NFC已连接,处理Tag
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
processTag(getIntent());
}
}
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent);
// 如果NFC已连接,处理Tag
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
processTag(intent);
}
}
private void processTag(Intent intent) { // 获取Tag对象 Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
// 处理你的NFC标签
}
在这个代码示例中,我们使用NfcAdapter.enableForegroundDispatch()方法启动NFC,并使用NfcAdapter.ACTION_NDEF_DISCOVERED意图来处理连接的NFC标签。你可以在processTag()方法中处理你的NFC标签