2017-01-04 48 views
0

例如,我的片段中有一個WebView組件。我用它來加載所有網頁的不同網址,有點愚蠢但有效。如您所知,我們指定我們的webviewclient(如WvjbWebViewClient或jsBridge)來處理所有請求。但是,現在我們想要使用WebView加載第三方平臺網站,但我們不希望爲他們提供我們的業務功能,而不是爲了其他目的,而是爲了我們的通信安全。如何動態爲webView設置webviewClient?

我們公司的域名是xxx.com。我想要做的是:當webview在這個域上加載這些網頁時,請使用我們的客戶WebViewClient,否則使用簡單的WebViewClient(新的實例)。如何解決它? (我們應該考慮url重定向嗎?)

+0

嘗試[this](http://stackoverflow.com/questions/6850017/how-to-set-webview-client),可能是這可以幫助你。 –

+0

@DeepPatel謝謝,我會試試看。 0.0 – fish

+0

@DeePatel對不起,這不適合我的答案。 – fish

回答

0

WebViewClient允許您在WebView本身中上傳WebView中選定的任何指定URL,並且不運行瀏覽器。爲此功能符合shouldOverrideUrlLoading(WebView,String)方法。如果它返回true - 我們不需要啓動第三方瀏覽器,並在這裏上傳他們自己的內容。

這裏我們選擇,如果我們能夠在我們的應用程序打開的內容的例子,或者我們需要打開瀏覽器:

public class MyWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(Uri.parse(url).getHost().endsWith("xxx.com")) { 
      return false; 
     } 

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     view.getContext().startActivity(intent); 
     return true; 
    } 
} 

這可如果想到幫助。

+0

我的意思是說,如果URL以「xxx.com」結尾,我使用我的webviewClient加載網頁內容,否則就像瀏覽器一樣使用簡單的webviewClient。你告訴我的是打開手機瀏覽器。無論如何,我不需要離開webview。 – fish

+0

在這種情況下,你的代碼,如果該URL不是結束「xxx.com」(指用戶離開我們公司的網頁),我打算移除MyWebViewClient(其中我處理登錄事件或共享的事件或其他東西。 ..),然後我調用webview.setWebViewClient(新的SimpleWebViewClient)的方法,SimpleWebViewClient實例不處理任何事情(只需打印控制檯日誌)。 – fish

+0

你可以拍攝上面的場景嗎?這正是我想要解決的問題。對我有何建議? – fish

相關問題