ลิงค์ WebView คลิกเปิดเบราว์เซอร์เริ่มต้น


112

ตอนนี้ฉันมีแอปที่โหลด webview และการคลิกทั้งหมดจะถูกเก็บไว้ในแอป สิ่งที่ฉันต้องการจะทำคือเมื่อมีการคลิกลิงก์บางลิงก์เช่นhttp://www.google.comภายในแอปจะเป็นการเปิดเบราว์เซอร์เริ่มต้น หากใครมีไอเดียโปรดแจ้งให้เราทราบ!

คำตอบ:


193

ฉันต้องทำสิ่งเดียวกันในวันนี้และฉันได้พบคำตอบที่มีประโยชน์มากใน StackOverflow ที่ฉันต้องการแบ่งปันที่นี่ในกรณีที่มีคนอื่นต้องการ

ที่มา (จากsven )

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
            view.getContext().startActivity(
                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
});

3
คำตอบนี้ช่วยฉันได้มาก! ขอบคุณ!
Android-Droid

7
โปรดทราบว่าหาก url สัมพันธ์กัน (ไม่ได้ขึ้นต้นด้วย "http: //") URL นั้นจะเปิดขึ้นภายในแอป เพื่อหลีกเลี่ยงไม่ให้สิ่งนี้กลับมาเป็นจริงเสมอและทำให้ลิงก์ url สัมพัทธ์ไม่ต้องทำอะไรเลย
Johan S

3
คุณควรตรวจสอบโปรโตคอลอื่น ๆ ในคำนำหน้าเช่น rtsp, https และอื่น ๆ หากลิงก์มีไว้เพื่อเปิดสื่อควรเปลี่ยนเส้นทางไปยังเครื่องเล่นสื่อของอุปกรณ์ หากไม่มีคำนำหน้าโปรโตคอลให้ระบุและระบุ
Abhinav Saxena

แน่นอนสิ่งที่ฉันกำลังค้นหา ขอบคุณ
Sudarshan

2
โปรดทราบว่าshouldOverrideUrlLoading(WebView view, String url)เลิกใช้แล้วใน API 24 ตรวจสอบคำตอบนี้
Mateus Gondim

35
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

คุณไม่จำเป็นต้องใส่รหัสนี้

// webview.setWebViewClient(new WebViewClient());

คุณต้องใช้รหัส d ด้านล่างแทน

webview.setWebViewClient(new WebViewClient()
{
  public boolean shouldOverrideUrlLoading(WebView view, String url)
  {
    String url2="https://whatoplay.com/";
     // all links  with in ur site will be open inside the webview 
     //links that start ur domain example(http://www.example.com/)
    if (url != null && url.startsWith(url2)){
      return false;
    } 
     // all links that points outside the site will be open in a normal android browser
    else
    {
      view.getContext().startActivity(
      new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
      return true;
    }
  }
});

11

คุณสามารถใช้ Intent สำหรับสิ่งนี้:

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);

11
คุณควรใช้ Intent ACTION_VIEW
rajh2504

10

คุณต้องเพิ่มบรรทัดต่อไปนี้เท่านั้น

yourWebViewName.setWebViewClient(new WebViewClient());

ตรวจสอบนี้สำหรับเอกสารอย่างเป็นทางการ


6

คุณสามารถใช้ Intent สำหรับสิ่งนี้:

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.