我正在尝试实现一个能够读取NFC标签的应用。假设我有5个不同的活动,那么我只希望其中3个活动能够读取标签。问题是我不知道如何“启用” Act1,Act2和Act3进行读取,以及禁用Act4和Act5。
我想我必须以某种方式使用onResume()中的onNewIntent(),enableForegroundDispatch()和onPause()中的disableForegroundDispatch(),但我不知道在哪里,主要是因为我不太了解任何功能其中。
我实际拥有的是一个活动(Act1),其AndroidManifest的声明中包含意图过滤器,而活动本身包含onNewIntent(),enableForegroundDispatch()和disableForegroundDispatch(),但是例如,当我在Act2或其他的,我读了一个标签,它通过其onCreate()方法转到Act1,但没有转到onNewIntent()。输入onNewIntent()的唯一时间是当我已经在Act1中并且随后阅读时。 实际上,我希望Act2和Act3能够读取,但Act4和Act5无法读取
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nfc);
mPresenter = new NFCPresenter();
mPresenter.attachView(this);
mPresenter.checkAndroidNFCSupport();
setIntent(getIntent());
}
@Override
protected void onPause() {
super.onPause();
mPresenter.mostrarMensaje(CLASS_NAME + " - disableForegroundDispatch");
mPresenter.disableForegroundDispatch();
}
@Override
public void onResume() {
super.onResume();
mPresenter.mostrarMensaje(CLASS_NAME + " - enableForegroundDispatch");
mPresenter.enableForegroundDispatch();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
mPresenter.readNFCTag(intent);
}
public void checkAndroidNFCSupport() {
nfcAdapter = NfcAdapter.getDefaultAdapter(mView);
if (nfcAdapter == null) {
showMessage("NFC Adapter is null.");
mView.finish();
} else {
if (!nfcAdapter.isEnabled()) {
showMessage("Should activate NFC");
} else {
pendingIntent = PendingIntent.getActivity(mView, 0, new Intent(mView, mView.getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
showMessage("PendingIntent just created");
}
}
}