【Android】Foreground dispatch can only be enabled when your activity is resumed【NFC】
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の読み取りをアプリがバックグラウンドの状態で行いたい場合、NfcAdapter
のenableForegroundDispatch
関数を使うんだけども、Activity
のonResume
以外で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月時点)