2013-02-02 48 views
5

這裏是我的代碼:Android:WebView - 在WebView中打開某些URL,其餘的在外部?

public class MainActivity extends Activity { 

@SuppressLint("SetJavaScriptEnabled") @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    WebView mywebview = (WebView) findViewById(R.id.webview); 
    mywebview.loadUrl("http://www.shufflemylife.com/shuffle"); 
    WebSettings webSettings = mywebview.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    mywebview.setWebViewClient(new WebViewClient()); 

} 

class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.contains("/shuffle")){ 
      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(Uri.parse(url)); 
      startActivity(i); 
      } 
     return true; 

     } 
    } 
    } 

基本上,我想包含「/洗牌」裏面的WebView加載任何URL,以及其他任何外部瀏覽器中打開。它可行嗎?我有多接近完成這個任務?

感謝您的幫助!

回答

4

它可行嗎?

是的。

我有多接近完成這個任務?

關閉,但向後。 WebView的默認行爲是在外部瀏覽器中顯示鏈接。因此,如果url.contains("/shuffle"),您要撥打WebView上的loadUrl()以保持鏈接內部,並且在那種情況下返回true。如果這是您想正常處理的URL,請返回false

4

要澄清一下,這是你應該怎麼寫你的shouldOverrideUrlLoading方法:

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.contains("/shuffle")) { 
     mWebView.loadUrl(url); 
     return false; 
    } else { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse(url)); 
     startActivity(intent); 
     return true; 
    } 
} 
+0

是 'mWebView.loadUrl(URL);'需要嗎? - 如果需要的話,它不應該是'view.LoadUrl(url)' – Frost

相關問題