【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月時点)