2011-09-12 6 views
2

以前はアンドロイドでウェブビューを使用しているときにリンクをクリックすると、「適切な」ブラウザが強制的に開かれ、その後そのWebブラウジングが続行されます。Android WebViewが新しいブラウザを起動しない

しかし、これはもはやそうではないようです。次のコードは、すべてのリンクがwebviewの中にとどまるようにしますが、実際にリンクが新しいブラウザインスタンスを起動するようにします。これは2.3で変わったのですか?私はほとんどの人が聞いて何の反対を求めてい

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     WebView view = new WebView(this); 
     setContentView(view); 

     view.loadUrl("http://news.bbc.co.uk"); 

    } 
} 

EDIT(彼らは私が彼らが外で起動したい、WebViewの内部のすべてのリンクを維持する方法を尋ねる):明確化 - 最初のURLがロードされます新しいWebブラウザですべてのクリックが開かれます。これは私が本当に欲しいものから簡素化されていますが、十分です。

これまでのところ、リンクをクリックすると新しいブラウザセッションが開きます。ほとんどの人はそれを望んでいません(したがって、ここではそれに関する質問ですが)。しかし、何らかの理由で、今はいつもwebviewにロードされているようです(2.3おそらく?)

答えて

2

ご理解ください。同じWebviewで最初のWebページを起動し、他のハイパーリンクはデフォルトブラウザに移動しますか、またはクリックした最初のリンクに対してデフォルトブラウザ自体を開きますか?

最初のケースでは、WebViewからリンクURLを収集する方法がわからない限り、私は正確にはわかりません。

2番目の例では、任意のURLクリックのデフォルトブラウザを起動するには、この行をスキップ(削除)してください:view.setWebViewClient(new WebViewClient() { });、デフォルトブラウザのすべてのリンクが開き、webview自体は表示されません。

+0

説明のために更新されました。また、webviewclientインスタンスがなくても動作しません(これは私のテストから残されたもので、元の投稿には含まれていてはいけません)。 – monkjack

+0

その場合は、touch/clickイベントをインターセプトし、WebViewからそれぞれのURLを取得し、ブラウザーでWebページを開くインテントを導入するようにプッシュすることをお勧めします。 – SamSPICA

+0

それは私がしたくなかったことですが、他の提案がなければこれを私の唯一の行動措置として受け入れます。 – monkjack

0

Houps、間違った答え、私はあなたの質問を誤解しました。 削除する必要があります...

関連する問題