2011-12-16 32 views
12

Vì vậy, những gì tôi có cơ bản là một webview đơn giản tải một trang. Trang này có một vài liên kết mở trong chế độ xem web. Đó là những gì nó phải làm, vì vậy nó làm việc tất cả tốt.Mở liên kết từ Android Webview trong trình duyệt thông thường dưới dạng popup

Nhưng có một liên kết duy nhất từ ​​trang đó nên tải dưới dạng cửa sổ bật lên, vì vậy tôi muốn nó mở trong trình duyệt thông thường khi mọi người nhấp vào. Nhưng như tôi đã nói, tất cả các liên kết đều mở trong chế độ xem web, do đó liên kết cũng thực hiện.

Câu hỏi của tôi là, làm cách nào để làm cho liên kết này mở trong trình duyệt thông thường dưới dạng một cửa sổ bật lên? Thậm chí có thể không? Liên kết biến đổi nên nó luôn thay đổi, nó không thể được mã hóa cứng trong ứng dụng để mở trong trình duyệt trình duyệt mới.

Ai đó có thể cho tôi biết nếu có thể và cách thực hiện? Cảm ơn nhiều!

+0

Sử dụng mục đích; vui lòng xem: http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application – Ozzy

+1

Tôi biết bạn nói rằng bạn không thể chăm chỉ mã nó, nhưng whats thay đổi về liên kết chắc chắn một cái gì đó được mã hóa mà bạn có thể dựa vào? Sau đó, chỉ cần ghi đè lênUrlLoading và chuyển url đó đến siêu nhưng đối phó với những người khác. Tôi có thể cho bạn một ví dụ nếu cần? – Blundell

+0

@ user1031312 Haha tất nhiên là không, tôi không ngu ngốc! Cảm ơn bạn đã trả lời, tôi sẽ xem xét nó vào ngày mai! – MartijnG

Trả lời

28

Dưới đây là một ví dụ về tải webview trọng để ở lại trong webview của bạn hoặc để lại:

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class TestWebViewActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     WebView webView = (WebView) findViewById(R.id.webview); 
     webView.setWebViewClient(new MyWebViewClient()); 
    } 
} 


class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.contains("somePartOfYourUniqueUrl")){ // Could be cleverer and use a regex 
      return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser 
     } else { 
      view.loadUrl(url); // Stay within this webview and load url 
      return true; 
     } 
    } 
} 
+0

Cảm ơn bạn rất nhiều! Tôi nghĩ rằng đây chính xác là những gì tôi đang tìm kiếm. Tôi sẽ thử nghiệm vào ngày mai, đầu tiên tôi phải ngủ một chút vì bây giờ là 1,15 giờ sáng;) – MartijnG

+0

Tôi cũng vậy, người nghiện: p haha. Vâng, bạn có thể đặt "share.php" trong đó chứa câu lệnh if. Chỉ cần cẩn thận không có gì khác sử dụng nó. – Blundell

4
public class WebViewActivity extends Activity { 

    private WebView webView; 
    private ProgressDialog progress; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview); 
     WebView myWebView = (WebView) findViewById(R.id.webView1); 
     myWebView.setWebViewClient(new MyWebViewClient()); 
     myWebView.loadUrl("https://www.example.com"); 
    } 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (Uri.parse(url).getHost().equals("https://www.example.com")) { 
       // This is my web site, so do not override; let my WebView load the page 
       return false; 
      } 
      // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      startActivity(intent); 
      return true; 
     } 
    } 
} 
Các vấn đề liên quan