2012-08-06 4 views
1

액티비티 스택 및 앱에 미치는 영향에 대한 이해에 문제가 있습니다.브라우저를 인 텐트로 열지 만 액티비티 스택에 보관하지 마십시오.

버튼을 클릭하면 인 텐트가 시작되어 브라우저가 열립니다. 브라우저에있을 때 홈 버튼을 누르면 홈 화면에 나타납니다. 이제 런처를 통해 앱을 다시 시작하면 내 앱 대신 브라우저가 열립니다. 내 앱을 실행할 때 브라우저를 열지 못하게하려면 어떻게해야합니까?

은 지금, URL을 열 수있는 코드는 다음과 같습니다

private void openUrlExternal(String url) { 
    Intent openUrlIntent = new Intent(Intent.ACTION_VIEW); 
    openUrlIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
    openUrlIntent.setData(Uri.parse(url)); 
    startActivity(openUrlIntent); 
} 

내가 잘못된 플래그를 사용하고 있습니까? 그렇다면 어떤 플래그를 사용해야합니까?

미리 감사드립니다.

+0

'Activity'를 'WebView'와 함께 사용하지 않고 모든 것을 직접 처리하지 않는 특별한 이유가 있습니까? – Squonk

+0

예, 특별한 이유가 있습니다. – methical

답변

4

다음과 같이하십시오 : 당신이 브라우저 대신 당신의 활동에 가야한다 당신 발사 재 때 의미 자신의 브라우저 작업을 해제해야

openUrlIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
openUrlIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

.

그러나 openUrlExternal()을 호출하는 위치에 따라 다릅니다. 액티비티가 시작될 때이 함수를 호출하면 여전히 브라우저로 돌아가지만 이벤트 리스너 (예 : 버튼 클릭)에서이 함수를 호출하면 앱을 다시 시작할 때 호출되지 않아야합니다.

+0

위대한이 작동하는 것 같습니다. 감사! – methical

1

나는 받아 들인 대답이 정확하다고 생각하지 않습니다. 그것은 당신이하고자하는 것에 달려 있습니다.

Intent.FLAG_ACTIVITY_NEW_TASK을 사용하면 실행 된 활동이 시작중인 활동과 완전히 별개임을 의미합니다. 특히 새 앱을 종료하지 않고 앱 버튼으로 이전 활동으로 전환 할 수 있습니다.

Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET을 사용하면 사용자가 앱 드로어에서 실행될 때 이전 활동으로 되돌아갑니다.

두 경우 모두 앱을 다시 실행하면 이전 활동으로 연결됩니다. 가장 큰 차이점은 두 가지 작업 (또는 마지막 작업)이 앱 전환기에 표시되는지 여부입니다.

관련 문제