마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onNewIntent를 여러번 실행하고 싶습니다.

0 추천

안녕하세요. 기존의 소스를 받은 어플이 있습니다.

어플을 실행하고 스탠바이 상태에서 NFC 태그를  태깅하면 아래의 코드가 실행되는데

postReading(rfid); 메소드를 호출해서 미리 정해놓은 URL을 브라우저를 호출하여 띄워주는 어플입니다.

근데 로그를 찍어보니 오로지 어플 실행중에 NFC를 최초에 태깅했을 때 한번만 저 로직을 타더라구요.

즉 두번째 세번째 계속 태깅하면 어플의 저 메소드가 실행되지 않고 NFC 태그에 쓰여진 URI만 자체 실행됩니다.

어떻게 하면 NFC를 태깅할 때마다 저 로직을 수행하게 할 수 있을런지요?

onNewIntent는 원래 오직 한번만 실행되는 것인가요?

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		String action = intent.getAction();

		if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) {
			if (DeviceStatus.READY_TAG == mDeviceStatus) {
				// get the tag from the Intent
				Tag mytag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
				String rfid = "";
				try {
					rfid = byteArrayToHexadecimal(mytag.getId());
					mDeviceStatus = DeviceStatus.SEND_DATA;
				} finally {
					if (mDeviceStatus == DeviceStatus.SEND_DATA) {
						postReading(rfid);
					}
				}
			}
		} else if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
			if (DeviceStatus.READY_TAG == mDeviceStatus) {
				// get the tag from the Intent
				Tag mytag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
				String rfid = "";
				try {
					rfid = byteArrayToHexadecimal(mytag.getId());
					mDeviceStatus = DeviceStatus.SEND_DATA;
				} finally {
					if (mDeviceStatus == DeviceStatus.SEND_DATA) {
						postReading(rfid);
					}
				}
			}
		}
	}

태그를 태깅할 때마다 소스의 로직을 타게 하고 싶습니다. 어느 부분을 수정해야할지 알려주시면 정말 고맙겠습니다.

alias (340 포인트) 님이 2013년 12월 9일 질문

1개의 답변

0 추천
해당 액비티비의 launchmode를 싱글태스크로 주고 해보세요.
젤바른스 (300 포인트) 님이 2013년 12월 10일 답변
...