반응형
NFC 태그 사용을 위한 권한설정에 대해 알아보겠다.
NFC 태그가 앱에 의해 감지될 때 android.nfc.action.TAG_DISCOVERED는 NFC 태그가 감지될 때 인텐트를 전달하는 데 필요하다. 이를 위해 AndroidManifest.xml에 설정을 추가해야 한다. 이 설정은 TAG_DISCOVERED, TECH_DISCOVERED, NDEF_DISCOVERED와 같은 액션을 통해 NFC 태그 감지 시 앱으로 인텐트를 전달하는 역할을 한다.
권한 설명
- android.nfc.action.NDEF_DISCOVERED:
NDEF 메시지를 포함한 NFC 태그가 감지되었을 때 작동하는 액션이다. 주로 특정 애플리케이션 데이터 또는 MIME 타입이 있는 태그에서 사용된다. - android.nfc.action.TAG_DISCOVERED:
NFC 태그가 감지되었을 때 작동하는 기본 액션으로, NDEF 메시지가 포함되지 않은 모든 NFC 태그를 처리할 수 있다. - android.nfc.action.TECH_DISCOVERED:
태그가 특정 기술(예: NfcA, MifareUltralight 등)을 지원할 때 작동한다. 이를 통해 특정 기술 스택을 가진 태그를 처리할 수 있다. 예를 들어 nfc_tech_filter.xml에서 정의된 기술과 일치하는 태그가 감지되었을 때 인텐트를 처리한다.
추가 설명
- MIME 타입은 NDEF 태그의 데이터를 처리할 때 필수입니다. 예를 들어, "text/plain"은 특정 애플리케이션 데이터 타입을 지정한 것입니다.
- NDEF_DISCOVERED는 NDEF 메시지가 포함된 태그만 처리할 수 있으므로, 태그의 내용이 특정 유형(MIME 타입)일 때만 작동하게끔 설정됩니다.
- TECH_DISCOVERED는 기술 스택을 기반으로 태그를 처리하며, nfc_tech_filter.xml에서 정의한 기술과 일치하는 태그가 감지되면 작동합니다.
AndroidManifest.xml 에 추가된 설정 예 :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mwkg.testwebview">
<!-- NFC 권한 설정 -->
<uses-permission android:name="android.permission.NFC"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.TestWebView">
<!-- FCM 푸시 알림 서비스 등록 -->
<service
android:name=".MyFirebaseMessagingService"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.TestWebView">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- NFC NDEF 태그 인텐트 필터 -->
<intent-filter>
<!-- NDEF 메시지를 포함한 NFC 태그가 감지될 때 앱으로 인텐트를 전달 -->
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<!-- NDEF 메시지에서 처리할 MIME 유형 지정 (예: 특정 애플리케이션 또는 텍스트 MIME 유형) -->
<data android:mimeType="text/plain" /> <!-- ex: "text/plain" 또는 "application/vnd.*" -->
</intent-filter>
<!-- NFC 태그 인텐트 필터 -->
<intent-filter>
<!-- 모든 NFC 태그가 감지될 때 앱으로 인텐트를 전달 (NDEF 메시지가 없을 때도 작동) -->
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- NFC 기술 인텐트 필터 -->
<intent-filter>
<!-- NFC 태그에 기술 스택이 감지되면 앱으로 인텐트를 전달 (특정 기술 유형을 지원하는 태그를 처리) -->
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- NFC 기술 필터 설정 (nfc_tech_filter.xml 파일을 참조하여 특정 기술을 처리) -->
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
</application>
</manifest>
nfc_tech_filter.xml 사용 예 :
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Ndef 태그 (NFC Data Exchange Format) -->
<tech-list>
<tech>android.nfc.tech.Ndef</tech>
</tech-list>
<!-- NdefFormatable 태그 (NFC 태그를 NDEF 형식으로 포맷할 수 있는 경우) -->
<tech-list>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
<!-- NfcA 태그 (ISO 14443-3A) -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
</tech-list>
<!-- NfcB 태그 (ISO 14443-3B) -->
<tech-list>
<tech>android.nfc.tech.NfcB</tech>
</tech-list>
<!-- NfcF 태그 (Felica, JIS 6319-4) -->
<tech-list>
<tech>android.nfc.tech.NfcF</tech>
</tech-list>
<!-- NfcV 태그 (ISO 15693) -->
<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>
<!-- IsoDep 태그 (ISO 14443-4) -->
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
<!-- MifareClassic 태그 -->
<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
<!-- MifareUltralight 태그 -->
<tech-list>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
<!-- 기술 조합이 필요한 경우 -->
<!-- NfcA와 Ndef, MifareUltralight를 동시에 지원하는 태그 -->
<tech-list>
<tech>android.nfc.tech.NfcA</tech>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>
반응형
'개발 > Android' 카테고리의 다른 글
<application> 및 <activity> 태그 속성과 하위 요소 (0) | 2024.10.25 |
---|---|
멀티라인 Toast 메시지 출력 (0) | 2024.10.24 |
NdefFormatable 태그 (0) | 2024.10.21 |
NFC Tag 상세정보 출력 (2) | 2024.10.18 |
안드로이드 각 버전별 추가된 주요 기능 (0) | 2024.10.15 |