繁体   English   中英

打开对话框选择浏览器

[英]Open dialog to choose browser

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

覆盖默认点击行为

当用户单击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的更多信息

处理Web视图中的链接

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

如果您已选择

默认情况下使用此应用程序复选框

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

唯一的解决方案是通过进入settings来清除该首选项。然后android会使用List向您显示Complete action。

在此处输入图片说明

而且,如果您想使用复杂的方法,则可以使用Javascript注入并在单击链接时调用Android代码,从而以编程方式向用户显示浏览器列表。

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

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

@Neha,这取决于您的手机中可用的浏览器数量。 例如,如果您只有默认浏览器,它将仅重定向到该浏览器。 如果您下次安装了chrome浏览器,则下次运行您的应用时,系统会要求选择浏览器选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM