如何管理来自特定不同活动的NFC标签读取

时间:2019-05-31 09:56:48

标签: android android-intent nfc ndef

我正在尝试实现一个能够读取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");
        }
    }
}

0 个答案:

没有答案