【Android】Foreground dispatch can only be enabled when your activity is resumed【NFC】

ネコニウム研究所

PCを利用したモノづくりに関連する情報を掲載するブログ

【Android】Foreground dispatch can only be enabled when your activity is resumed【NFC】

2022-10-12 | , ,

AndroidでNfcAdapterのenableForegroundDispatch関数を使う時に例外が発生してForeground dispatch can only be enabled when your activity is resumedが出力される場合の対応手順!

概要

今回の記事では、AndroidでNfcAdapterのenableForegroundDispatch関数を使う時に例外が発生してForeground dispatch can only be enabled when your activity is resumedが出力される場合の対応手順を掲載する。

仕様書

環境

  • Android Studio Dolphin 2021.3.1
  • Java 1.8(8)

手順書

NFCの読み取りをアプリがバックグラウンドの状態で行いたい場合、NfcAdapterenableForegroundDispatch関数を使うんだけども、ActivityonResume以外でenableForegroundDispatch関数を使うと例外
が発生してForeground dispatch can only be enabled when your activity is resumedが出力される。

出力されたメッセージの通りでenableForegroundDispatch関数はonResumeの中で使う。

    @Override
    protected void onResume()
    {
        super.onResume();

        this.nfcAdapter.enableForegroundDispatch(this, pendingIntent, filters, null, techLists);
    }

引数は、onResumeでインスタンス化すると何度もインスタンス化されてしまうのでonCreateの中でインスタンス化しておくのが吉。

    @Override
    public void onPause() {
        super.onPause();
        nfcAdapter.disableForegroundDispatch(this);
    }

onPauseが呼ばれた時にdisableForegroundDispatch関数を使うことを忘れない。

まとめ(感想文)

NFCのお作法、いろいろありますね。

PR

テスト用に使ってるNFCラベル。
安いけど問題なし!オススメ!!
50枚入り。1枚40円。(2022年9月時点)