투케이2K

939. (Android/Java) [간단 소스] 안드로이드 NFC 카드 읽기 NfcAdapter enableForegroundDispatch IntentFilter 설정 코드 본문

Android

939. (Android/Java) [간단 소스] 안드로이드 NFC 카드 읽기 NfcAdapter enableForegroundDispatch IntentFilter 설정 코드

투케이2K 2025. 1. 16. 20:00

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin

- 개발 툴 : AndroidStudio

- 기술 구분 : Nfc / Card / Tag / Ndef / Tech

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[사전) 필요 설정]
// --------------------------------------------------------------------------------------

/**
  * // -------------------------------------------------------
  * 1. 필요 퍼미션 :
  *
  * <uses-permission android:name="android.permission.NFC"/>
  * <uses-feature android:name="android.hardware.nfc" android:required="true" />
  * // -------------------------------------------------------
  * 2. 참고 사이트 :
  *
  * UID 및 NDEF 메시지 읽기, 쓰기 : https://blog.naver.com/kkh0977/223128033201?trackingCode=blog_bloghome_searchlist
  *
  * 마이페어 카드 섹터 블럭 읽기 : https://blog.naver.com/kkh0977/223015747045
  *
  * 안드로이드 어댑터 클래스 : https://developer.android.com/reference/android/nfc/NfcAdapter
  * // -------------------------------------------------------
  * */

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// -------------------------------------------------------
// TODO [NFC 어댑터 초기화 수행]
// -------------------------------------------------------
NfcAdapter nfcAdapter = = NfcAdapter.getDefaultAdapter(mMainCtx);


// -------------------------------------------------------
// TODO [액티비티 라이프 사이클 : onResume >> NFC 읽기 IntentFilter 설정]
// -------------------------------------------------------
// TODO [onNewIntent >> 실시간 NFC 카드 데이터 태깅 값 확인]
// -------------------------------------------------------
// TODO [카드 읽기 타입 지정]
IntentFilter tagDetected = new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED); // [TAG]
IntentFilter ndefDetected = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); // [NDEF]
IntentFilter techDetected = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED); // [TECH]

IntentFilter[] nfcIntentFilter = new IntentFilter[]{techDetected,tagDetected,ndefDetected}; // [배열에 추가]


// TODO [PendingIntent 선언]
PendingIntent pendingIntent = null;
Intent intent = new Intent(mMainCtx, mMainCtx.getClass());
//intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ // TODO [타겟 31 이상]
    pendingIntent = PendingIntent.getActivity(mMainCtx, 0, intent, PendingIntent.FLAG_MUTABLE );
}
else { // TODO [타겟 31 미만]
    //pendingIntent = PendingIntent.getActivity(mMainCtx, 0, intent, 0);
    pendingIntent = PendingIntent.getActivity(mMainCtx, 0, intent, PendingIntent.FLAG_IMMUTABLE);
}


// TODO [포그라운드 태그 활성 대기]
String [][] techListsArray = new String[][]{new String[]{NfcF.class.getName()}};

nfcAdapter.enableForegroundDispatch((Activity) mMainCtx, pendingIntent, nfcIntentFilter, techListsArray);


// -------------------------------------------------------
// TODO [액티비티 라이프 사이클 : onPause >> NFC 읽기 모드 비활성 처리]
// -------------------------------------------------------
nfcAdapter.disableForegroundDispatch((Activity) mMainCtx);

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

UID 및 NDEF 메시지 읽기, 쓰기 : https://blog.naver.com/kkh0977/223128033201?trackingCode=blog_bloghome_searchlist

마이페어 카드 섹터 블럭 읽기 : https://blog.naver.com/kkh0977/223015747045

안드로이드 어댑터 클래스 : https://developer.android.com/reference/android/nfc/NfcAdapter

NFC 기능 활성 및 카드 Read , Write 관련 모듈 : https://blog.naver.com/kkh0977/223607573751?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
반응형
Comments