2012-11-10 7 views
5

私は既に特定のWebViewのJavaScriptを有効にしており、ブラウザではなくWebView内で新しいリンクを開きます。 これは、主な活動WebViewがブラウザを開くのを防ぐ

package com.Afrogfx.pronouns; 

    import android.os.Bundle; 
    import android.annotation.SuppressLint; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.webkit.WebView; 

    @SuppressLint("SetJavaScriptEnabled") 
    public class MainActivityPronouns extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_activity_pronouns); 

    WebView wvHtml = (WebView) findViewById(R.id.webview); 
    wvHtml.getSettings().setBuiltInZoomControls(true); 
    wvHtml.getSettings().setJavaScriptEnabled(true); 
    wvHtml.loadUrl("http://afrogfx.com/appcatcategories.php?catid=13&parentid=11"); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main_activity_pronouns, menu); 
    return true; 
    } 
    } 

ですどのように私は、WebViewの(APP)の内部ではなく、ブラウザ&(ブラウザで開くのユーザーに表示されません)にサイト内のすべてのリンクを開くために私のコードをヘンデルことができます。

+0

の可能複製([クリックURLは、デフォルトのブラウザが開きます] http://stackoverflow.com/questions/2378800コード - です/ click-urls-opens-default-browser) – Confuse

答えて

0

ので、あなただけのサブクラスを作成

webview.setWebViewClient(new HelloWebViewClient()); 

としてWebviewClicent ..ここでは、WebViewの内クラス

private class HelloWebViewClient extends WebViewClient 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(final WebView view, final String url) 
    { 
     Utils.showActivityViewer(WebsiteActivity.this); 
     new Thread(new Runnable() 
     { 

      public void run() 
      { 
       view.loadUrl(url); 
      } 



      }).start(); 



     return true; 
    } 
} 

とバインドで使用し、そのためにhttp://developer.android.com/reference/android/webkit/WebViewClient.html

+0

「ビュー階層を作成した元のスレッドのみがそのビューに触れることができます」例外: – Stan

12

を参照する必要がWebClientを拡張し、そのクラスのメソッドをPageFinished(WebView c、String url)および
に使用します公共ブールshouldOverrideUrlLoading(最終のWebViewビュー、最終文字列のURL)ここ

myWebView.setWebViewClient(new WebViewClient()  
     { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       //view.loadUrl(url); 
       System.out.println("hello"); 
       return true; 
      } 
     }); 
     myWebView.loadUrl(url); 
関連する問題