2011-12-16 48 views
12

私は基本的にページを読み込む簡単なwebviewです。このページには、webview内で開くいくつかのリンクがあります。それがやるべきことなので、うまくいっています。通常のブラウザでAndroid Webviewのリンクをポップアップとして開きます

しかし、ポップアップとしてロードする必要があるそのページからのリンクが1つあります。そのため、ユーザーがクリックすると通常のブラウザで開くことができます。しかし、私が述べたように、すべてのリンクがwebviewで開かれているので、リンクもそれを行います。

私の質問は、ポップアップの一種として、このリンクを通常のブラウザで開くことができますか?それも可能ですか?リンクは可変なので、常に変化しています。アプリケーション内でハードコーディングして新しいブラウザブラウザで開くことはできません。

誰かが可能かどうかを教えてもらえますか?どうもありがとうございました!ここで

+0

意思の使用;参照してください:http://stackoverflow.com/questions/2201917/how-can-i-open-a-url-in-androids-web-browser-from-my-application – Ozzy

+1

私はあなたが難しいことはできないと知っているそれをコード化しますが、リンクについて何が変わるかは、あなたが頼りにできるコードがありますか?次に、onUrlLoadingをオーバーライドして、そのURLをスーパーに渡しますが、他のURLを処理します。必要に応じて例を挙げることができますか? – Blundell

+0

@ user1031312もちろん、私はばかなことではありません!答えをありがとう、私は明日それを見てみましょう! – MartijnG

答えて

28

はあなたのWebView内にとどまるか、または残すためのWebViewの負荷をオーバーライドする例を示します

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

ありがとうとても!私はこれがまさに私が探しているものだと思います。私はこれを明日テストします、まずは午前1時15分に寝なければなりません。) – MartijnG

+0

ああ、中毒:p笑。そう、if文を含む "share.php"を入れることができます。他に何も使用しないように注意してください。 – 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; 
     } 
    } 
} 
関連する問題