打开对话框以选择浏览器

时间:2013-02-22 04:45:45

标签: android

我有一个webview,其中加载了一个url,其中有一些url可以点击,但问题是当我点击webview中加载的页面上的链接时它会在默认浏览器中打开,我想打开包含所有浏览器的对话框当我点击设备中的链接时,要求选择浏览器,它应该在所选的浏览器中打开?

3 个答案:

答案 0 :(得分:1)

覆盖默认点击行为

当用户点击WebView中的链接时,默认行为是加载任何默认应用程序都可以处理的链接。因此,如果您单击Web URL,浏览器将打开以处理它。如果您尝试在本地构建的网页之间导航,则需要覆盖此功能。幸运的是,这并不难处理。您可以通过将WebView的WebViewClient设置为WebViewClient的新实例来实现超级快速,如下所示:

OnCreate中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView webView = (WebView) findViewById(R.id.webView1);

    WebViewClient viewClient = new WebViewClient(){

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url)); 
            startActivity(intent); 
            view.loadUrl(url);
            return true;

        }
    };

    webView.setWebViewClient(viewClient);
    webView.loadUrl("http://www.google.com");
}

有关WebViewClient

的更多信息,请查看以下链接

handling links in a webview

答案 1 :(得分:0)

  

但问题是当我点击webview中加载的页面上的链接时   在默认浏览器中打开

如果您选择了

  

默认使用此应用程序复选框

然后android停止向用户显示选项列表,并继续在选定的默认浏览器中打开链接。

你可以拥有的唯一解决方案是通过进入设置来清除偏好。然后,Android将显示使用List的完整动作。

enter image description here

如果您想以复杂的方式进行操作,那么您可以使用Javascript注入并在单击链接时调用Android代码,这将以编程方式向用户显示浏览器列表。

您可以使用PackageManagerqueryIntentActivityOptions()来过滤您的活动,并获取用户可以选择的其他活动的列表。

http://developer.android.com/guide/webapps/webview.html

答案 2 :(得分:0)

@Neha取决于您手机中有多少浏览器可用。例如,如果你只有默认浏览器,它只会重定向到该浏览器。如果您下次运行应用程序时安装了Chrome浏览器,请选择浏览器选项。