2013-01-08 3 views
1

내 Android 앱에서 기본 웹 브라우저를 실행하여 사용자를 인증 웹 페이지로 보내고 확인한 후 콜백을 사용하여 앱으로 다시 보냅니다.Android 기본 웹 브라우저를 실행 한 후 다시 클릭하기

나는 그 기능이 작동하지만 사용자가 웹 브라우저에서 스스로 확인하고 싶지 않다고 결정한 상황을 가로 채고 내 단추로 돌아가서 내 응용 프로그램으로 돌아가는 데 어려움을 겪고 있습니다.

onActivityResult()를 사용하여 다시 클릭을 가로 채기 위해 startActivityForResult()를 사용하여 웹 브라우저를 시작하려했지만 웹 브라우저를 시작한 직후에 onActivityResult()가 호출되었고, 다시 클릭합니다. 이 코드를 실행 한 후

public class MainActivity extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 

     Log.i("MainActivity","onCreate called"); 

     Uri uri = Uri.parse("http://www.google.com"); 

     Intent intent = new Intent(Intent.ACTION_VIEW,uri); 

     startActivityForResult(intent,101); 

     Log.i("MainActivity","startActivityForResult called"); 
    } 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 

     Log.i("MainActivity","onResume called"); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     Log.i("MainActivity","onActivityResult called"); 
    } 
} 

출력 : : 여기

이 문제를 보여줍니다 몇 가지 기본적인 테스트 코드의 사용자가 다시 웹 브라우저에서 클릭하면 다음

I/MainActivity(545): onCreate called 
I/MainActivity(545): startActivityForResult called 
I/MainActivity(545): onResume called 
I/MainActivity(545): onActivityResult called 
I/MainActivity(545): onResume called 

을, 그냥 onResume을 (호출) 세 번째.

그렇다면 사용자가 브라우저에서 다시 클릭했을 때 내가 어떻게 인식 할 수 있는지에 대한 제안 사항이 있습니까?

+0

안녕하세요 인증/지불 완료시 브라우저를 닫는 기능을 추가하려고합니다! 도와 드릴까요? 해결책이 무엇인지 말해 줄 수 있습니까? –

답변

5

방법이 시도주는 약 : 당신의 로그에 대한

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    super.onWindowFocusChanged(hasFocus); 
} 
+0

히야, 유용한 아이디어 였고 약간의 재빠른 해커로 잘 작동하는 것 같습니다. 고마워! 다른 누군가가 여기에 올랐다면 나는 안드로이드 웹 브라우저를 시작하기보다는 WebView를 액티비티로 감싸는 것, 그리고 브라우징 입력을보다 잘 제어 할 수 있다는 것을 발견했다. – Spoonface

+0

@Givi 각 대화와 모든 창 포커스 변경에 영향을 미치므로 쓸모가 없다는 것을 알았습니다. 왜 이런 일이 일어나고이 사건에 대한 전역 제어가 무엇인지 알 수 있습니까? 이것은 내 코드입니다 : http://www.codeproject.com/Questions/990063/Why-onActivityResult-can-not-catch-result-from-bro?arn=1 –

0

이유는 다음과 같습니다

  1. 당신은 onCreate()에서 startActivityForResult(intent,101);라고합니다. 첫 번째 onResume()

  2. 브라우저는 항상 새 작업에서 열립니다 볼 이유는 종래 onCreate() 뒤에 onResume() 수명주기 방법은, 그래서 onActivityResult()가 즉시 호출됩니다는 돌아 오지에의 resultCode RESULT_CANCELLED

  3. 로 이잖아 당신의 활동이 다시 표시되며 로그에 onResume()이 표시됩니다.

관련 문제