검색해봤지만 시원한 답이 없군요.
android sdk 페이지에 있는 foreground dispatch도 써봤지만 시원한 답이 아니였습니다.
제가 지금 하고 싶은것은 앱이 설치되어 있는 상태에서,
홈스크린에서 NFC를 태그하면 그 앱이 자동으로 실행되는것을 목표로 하고 있습니다.
앱을 실행한 상태에서 NFC를 태그 했었을때 원하는 작업을 하기는 합니다만, 앱을 실행하지 않은 상태에서 홈스크린에서 NFC를 태그했었을때
자동으로 그 앱을 실행시키려면 어떻게 해야하는지 조언 부탁드립니다. ;)
궁금하신 부분이 단말내에 NFC 어플이 2개 이상인 경우 태그를 read시, 설치 된 모든 NFC 어플 중에서 선택하는 방식이 아니라
랩가루님께서 만드신 어플이 바로 동작하도록 하려는건가요?
일반적으로 구글 정책상 NFC 태그를 read시에는 설치 된 NFC 어플 중에서 사용자가 선택하도록 되어 있는 것으로 알고 있습니다.
다만, 특정 NFC 어플이 바로 동작 하게 하는 방법은 태그에 특정 값을 함께 기록하여서 해당 어플이 바로 동작 하도록 할 수 있습니다.
어플에서는 manifest에 대강 이런식으로 <intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="application/어플 구분 값" />
</intent-filter> 하시고요..
개발 하시는 소스 코드 상의 NDEF 메시지 read 하는 부분에도 "application/어플 구분 값" 을 read 하도록 추가하시고,
태그 write 하는 부분에도 "application/어플 구분 값"을 태그 메시지와 함께 write 하도록 하시면 될 겁니다.
답변 감사합니다. 어플 구분값이라면.. activity 이름을 말씀하시는건가요? 아님 그냥 제가 임의로 temp123라고 해놓고 read하는 부분에 temp123을 읽는다 하면 되는거겟죠?? easynfc라고 오픈베타소스를 library로 사용하고 있어서 조금 헷갈리고 있네요.
현재 NFC sticker에는 bluetooth MAC address가 URI로 기록하였구요, manifest에는 이미 말씀하신 action및 category field는 기록이 되어 있습니다. data만 없구요..어플 실행된 상태에서 tag하면 chooser도 안뜨고 앱이 잘 돌아가는데, 종료시킨다음에 tag하면 chooser가 뜨면서 tag/tagwriter(nxp어플) 만 떠서 며칠째 고민하고 있습니다.
NFC 는 chooser가 뜨긴 하지만, 기본 동작 앱으로 설정할 수 없다고 합니다. 그래서 저도 프로젝트 할 때, 실제 고민했던 부분이고요. 위에 제가 알려드린 방법으로 하면 해결이 될 겁니다. 저희 어플에도 실제 적용한 내용이고요. "어플 구분 값"은 임의의 값으로 넣으시면 됩니다. NFC 태그에 메시지 기록할때도 동일한 구분 값을 입력하셔야 합니다. 요런식으로.. String rtd = "application/어플 구분 값";




서비스 쓰셔야겠죠..?
NFC를 인식하는 소스를 스레드로 돌려서
NFC가 인식 되었을때 강제로 어플을 실행 시키구요...
서비스는 폰 실행할때 같이 실행 되게끔 해 주시면 될껍니다.
서비스 실행법은 구글에서 검색하시면 많이 나오구요