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

기본 맵을 띄운 후 onActivityResult 가 너무 빨리 옵니다

0 추천
String kGeo = "geo:0,0?q=" + $place;
Intent kIntent = new Intent(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(kGeo)));
startActivityForResult(kIntent, REQ_CODE);

 

이렇게 지도를 띄웠습니다.

그리고 맵이 닫히면 작업을 하기위해 

@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data)
	{
		Log.w("MainActivity.java | onActivityResult", requestCode + " | " + RESULT_OK + " == " + resultCode + " | " + data);
		super.onActivityResult(requestCode, resultCode, data);
	}

이렇게 해놨습니다.

 

근데 가장 처음 실행했을 때 딱 한번은 되는데, 그 다음부터는 맵 액티비티가 뜨자마자 onActivityResult 가 호출됩니다.

 

확인한 폰은 갤노트2, 옵티머스 LTE2, 옵티머스G 프로 입니다. 

모두 다 반응은 같더라구요...

 

방법이 없을까요? ㅠㅠ 

 

쎄미 (162,410 포인트) 님이 2013년 5월 10일 질문

2개의 답변

0 추천
String kGeo = "geo:0,0?q=" + $place;
Intent kIntent = new Intent();
kIntent.setClass(this, ResultActivity.class);
kIntent.putExtra("data", kGeo);
startActivityForResult(kIntent, 12);

보내는 쪽에서는 이렇게 해서 제가 만든 다른 액티비티를 띄우고, 

 

@Override
protected void onCreate(Bundle savedInstanceState)
{
	super.onCreate(savedInstanceState);
	setContentView(R.layout.act_result);
	
	String kGeo = getIntent().getStringExtra("data");
	Intent kIntent = new Intent(new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(kGeo)));
	startActivityForResult(kIntent, 122);
	_isLaunchAnotherApp = true;
}


@Override
protected void onResume()
{
	super.onResume();
	if (_isLaunchAnotherApp)
	{
		setResult(RESULT_OK);
		finish();
	}
}

어쩔 수 없이 이렇게 하는거 말고는 생각이 안나네요...

쎄미 (162,410 포인트) 님이 2013년 5월 10일 답변
request코드별로 onActivityForResult 안에서 분기를 태워보세요
startActivityForResult 이후에 곧바로 onActivityForResult 가 실행됩니다. 맵어플은 아직 떠 있는 상태이구요.
0 추천
AndroidManifest.xml 에서 launchMode 를 변경 하세요.
익명사용자 님이 2013년 5월 10일 답변
네개 다 바꿔봐도 독같습니다....
...