若使用 enableReaderMode() 方法时没有被调用 ReaderCallback 回调,可能是因为该方法被错误地使用。以下是一个正确使用 enableReaderMode() 方法的示例:
public class MainActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback {
private NfcAdapter nfcAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
}
@Override
protected void onResume() {
super.onResume();
// 检查设备是否支持 NFC
if (nfcAdapter == null) {
Toast.makeText(this, "设备不支持NFC", Toast.LENGTH_SHORT).show();
return;
}
// 声明要启用 Reader Mode
int flags = NfcAdapter.FLAG_READER_NFC_A | NfcAdapter.FLAG_READER_SKIP_NDEF_CHECK;
// 启用 Reader Mode
nfcAdapter.enableReaderMode(this, this, flags, null);
}
@Override
protected void onPause() {
super.onPause();
// 关闭 Reader Mode
nfcAdapter.disableReaderMode(this);
}
@Override
public void onTagDiscovered(Tag tag) {
// TODO: 处理NFC标签
}
}
请注意,必须要实现 NfcAdapter.ReaderCallback 接口,并在 enableReaderMode() 方法中将 this 作为第二个参数传递,才能确保 ReaderCallback 回调被正确地调用。