2016-08-17 38 views
0

我有一個應用程序,我加載了一個外部網頁。在該頁面上,我有一個鏈接重定向到另一個網址。我想要的是從我的android應用程序中跟蹤外部網頁的URL,以便當單擊該特定鏈接並開始加載URL時,Web視圖將關閉,用戶返回到我的應用程序的主屏幕試圖在webview中跟蹤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

'一個應用程序,我加載外部Web應用程序?我所看到的是您在WebView中加載外部網頁。目前還不清楚你想要完全關閉。 – greenapps

+0

好吧,是的,我基本上正在加載一個網頁。該網頁有一個鏈接,重定向到一個網址。我想要的是從我的應用程序中跟蹤該URL,以便在鏈接開始加載時,Web視圖應該關閉並返回到我的應用程序。 – lagfvu

+0

你的代碼有什麼問題? – greenapps

回答

0

這個條件是不正確的

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

應該

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

因爲==將比較參考而不是價值觀,而另一個則是。

P.S:對於未來變化較小/錯誤,請使用endsWith()而不是equals();前,域名更改您的條件仍然有效。

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

這有效,但如果條件滿足,我如何將我的用戶返回到我的應用程序的主屏幕?如果主屏幕是堆棧中的下一個活動,只是'完成()'webview活動,我試着開始打算打開頁面的意圖,但它不起作用 – lagfvu

+0

@lagfvu。如果這不起作用,你必須在一個新問題中提出這個問題,並提出更多相關問題的代碼,因爲這個問題是關於檢測/跟蹤webview中的某個url – Yazan