안녕하세요. 다름이 아니라 nfc 태깅 관련한 어플을 개발했는데요
어플을 켜고 nfc태깅을 계속 하면 어플내에서 처리한 onNewIntent 함수 타면서
로직을 계속 잘 실행하는데요, 문제는 전화가 왔거나 혹은 어플내에서 웹브라우저 링크되어 있는
버튼 클릭해서 어플위에 웹브라우저가 위치하는 상황이 발생되면
이 때에 태깅시에는 어플에서 nfc를 인식하지 못하고 안드로이드 시스템에서 nfc를 캐치하네요.
그래서 다시 어플을 재실행 해주거나 어플 내의 해당 액티비티를 재 로딩 해야
그때서야 만들어놓은 nfc 태깅 로직을 탑니다.
어떻게 하면 어플 위에 따른 이벤트나 뷰가 와도 어플 내에 구현해 놓은 nfc 태깅 이벤트를
타게 할 수 있을까요? 비슷한 예로는 홈버튼을 눌렀다가 다시 어플 선택해서
태깅 액티비티를 포그라운드로 선택해도 마찬가지 입니다.
액티비티는 태깅 레디 그대로인데 태깅해보면 어플에서 캣치 못하고 안드로이드 시스템에서 캣치합니다.
현재 해당 class의 android:launchMode="singleTask"로 해놨고
private void enableForegroundDispatch(boolean enable) {
// Check for available NFC Adapter
NfcManager manager = (NfcManager) getSystemService(NFC_SERVICE);
if (manager != null && manager.getDefaultAdapter() != null) {
if (enable) {
PendingIntent intent = PendingIntent.getActivity(
this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
ndef.addDataType("*/*");
} catch (MalformedMimeTypeException e) {
throw new RuntimeException("fail", e);
}
IntentFilter[] intentFiltersArray = new IntentFilter[] {ndef, };
String[][] techListsArray = new String[][] { new String[] { NfcA.class.getName() } };
manager.getDefaultAdapter().enableForegroundDispatch(this, intent, intentFiltersArray, techListsArray);
} else {
//manager.getDefaultAdapter().disableForegroundDispatch(this);
}
}
}
위의 함수 따로 만들어서
@Override
protected void onPause() {
super.onPause();
enableForegroundDispatch(false);
}
이런식으로 쓰고 있어요.
어디를 손보면 어플 위에 웹브라우저 같은게 뜨게 되도 연속 태깅시
그 밑면에 실행중인 어플의 nfc 태깅 로직을 타게 할 수 있을까요?
도움 좀 부탁드리겠습니다.