2013-02-02 30 views
5

Dưới đây là mã của tôi:Android: WebView - mở một số URL nhất định bên trong WebView, phần còn lại bên ngoài?

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; 

     } 
    } 
    } 

Về cơ bản, tôi muốn bất kỳ url chứa '/ ngẫu nhiên' để tải bên WebView, và bất cứ điều gì khác sẽ được mở trong trình duyệt bên ngoài. Nó có thể làm được không? Làm thế nào gần tôi làm được điều này?

Cảm ơn bạn đã trợ giúp!

Trả lời

4

Có thể thực hiện được không?

Có.

Làm cách nào để hoàn thành việc này?

Đóng, nhưng lùi lại. Hành vi mặc định của WebView là hiển thị liên kết trong trình duyệt bên ngoài. Do đó, nếu url.contains("/shuffle"), bạn muốn gọi số loadUrl() trên số WebView để giữ liên kết nội bộ và trả lại true trong trường hợp đó. Nếu đây là URL bạn muốn xử lý bình thường, hãy trả lại false.

4

Để làm rõ, đây là cách bạn nên viết phương pháp shouldOverrideUrlLoading của bạn:

@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

Là 'mWebView.loadUrl (url);' cần thiết? - và không nên là 'view.LoadUrl (url)' nếu cần – Frost

Các vấn đề liên quan