2016-08-17 4 views
0

외부 웹 페이지를로드 할 수있는 앱이 있습니다. 해당 페이지에서 다른 URL로 리디렉션되는 링크가 있습니다. 내가 원하는 건 내 안드로이드 응용 프로그램 내부에서 외부 웹 페이지의 URL을 추적하여 특정 링크를 클릭하면 URL이로드되기 시작하고 웹보기가 닫히고 사용자가 내 응용 프로그램의 홈 화면으로 돌아가도록하는 것입니다.웹보기에서 URL 추적 시도 중

String token; 
WebView viewer; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web_view); 

    viewer = new WebView(this); 
    viewer.getSettings().setJavaScriptEnabled(true); 
    viewer.setWebViewClient(wvc); 
    setContentView(viewer); 

    Intent intent = getIntent(); 
    token = intent.getStringExtra(home.EXTRA_MESSAGE); 
    String home = "http://10.0.2.2:8888/map/index?token="+token; 

    viewer.loadUrl(home); 

} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && viewer.canGoBack()) 
    { 
     viewer.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 


private WebViewClient wvc = new WebViewClient() 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     if(url == "http://10.0.2.2:8888/map/api/logout") 
     { 
      view.clearHistory(); 
      view.destroy(); 
      return true; 
     } 
     return false; 
    } 
}; 
+0

'외부 웹 응용 프로그램을로드하는 앱'은 무엇입니까? 내가 보는 것은 WebView에서 외부 웹 페이지를로드한다는 것입니다. 그리고 정확히 닫으려는 것이 확실하지 않습니다. – greenapps

+0

그래, 기본적으로 웹 페이지를로드하고있다.이 웹 페이지에는 URL로 리디렉션되는 링크가있다. 내가 원하는 것은 링크가로드되기 시작하면 웹보기가 닫히고 내 응용 프로그램으로 돌아가도록 내 응용 프로그램 내부에서 URL을 추적하는 것입니다. – lagfvu

+0

그리고 코드에 어떤 문제가 있습니까? – greenapps

답변

0

이 조건은 ==이 참조 비교합니다

if(url.equals("http://10.0.2.2:8888/map/api/logout")) 

때문에 그것이 있어야

if(url == "http://10.0.2.2:8888/map/api/logout") 

정확하지 않습니다 다른 하나는 가치관이 아니라 가치관입니다.

P.S : 향후 변경/버그가 적 으면 equals() 대신 endsWith()을 사용하십시오. 예, 도메인 이름이 바뀌면 상태가 계속 유효합니다.

if(url.endsWith("map/api/logout")) 
+0

그게 효과가 있지만, 조건이 충족되면 내 사용자를 내 앱의 홈 화면으로 되 돌리는 방법은 무엇입니까? 나는 페이지를 열려고 의도를 시작했지만 작동하지 않았다. – lagfvu

+0

@lagfvu 홈 화면이 스택의 다음 활동 인 경우 webview 활동 만 'finish()'한다. 이것이 작동하지 않으면 새로운 질문에서이 질문을하고 문제와 관련된 코드를 추가해야합니다.이 질문은 웹 뷰에서 특정 URL을 감지/추적하는 것과 관련되어 있습니다. – Yazan