android - 打开对话框以选择浏览器

标签 android

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

最佳答案

覆盖默认点击行为

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

创建时:

@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

关于android - 打开对话框以选择浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017013/

相关文章:

java - 使用 Android Test Orchestrator 执行 Instrumented 测试时无法获取异常的堆栈跟踪

AndroidRuntime : java. lang.UnsatisfiedLinkError: dlopen failed: library "libandroidicu.so"not found

android - 如何在android中进行表单验证

android - RoboGuice:如何在我的自定义类中使用 RoboGuice 提供的注入(inject)?

java - 了解 Android 中的 Runnable

android - 从电视向 Android 手机发送 CEC 命令

android - 重新启动应用程序时,realm-java 数据丢失

android - 在Ionic中构建Android App的问题

android - 检测应用程序是否从 'outside' 应用程序启动/恢复

android - 从包中获取参数