在Kotlin中,如何在新窗口中打开链接

时间:2017-08-30 11:04:39

标签: android kotlin kotlin-android-extensions

我是Kotlin的tyro,但我对AndroidCore java有很好的了解。我通过Kotlin协助开发Android应用时遇到了一个问题。

当用户点击pdf文档上的链接时,我想要这样做;该链接应在浏览器上打开(如果浏览器已打开,则链接应在新窗口上打开而不是同一窗口的新标签)。

我已经实现了很多目标,但是如果浏览器已经打开,我还没有找到如何在新窗口中打开链接?

我已经尝试了下面的代码(点击pdf上的链接然后重定向到下面的函数调用):

fun web_page_open(urls: String) { // for more than one url
    val uris = Uri.parse(urls)
    val intents = Intent(Intent.ACTION_VIEW, uris)
    startActivity(intents)
} 

我已经尝试过我最好的水平来解释我的问题并且也搜索了很多(在github上),但我所有的努力都是静脉。

热烈欢迎任何帮助。

编辑:如果用户已经打开默认浏览器(例如ABZfox),那么考虑一个实例,然后pdf(或文档)中的链接是单击然后打开 ABZfox 的新窗口,而不是用户之前工作的同一窗口。我确定这个问题现在有道理了!

2 个答案:

答案 0 :(得分:8)

你可以尝试这个,可能会有所帮助,打开像

这样的网页浏览器的新标签
fun openNewTabWindow(urls: String, context : Context) {
    val uris = Uri.parse(urls)
    val intents = Intent(Intent.ACTION_VIEW, uris)
    val b = Bundle()
    b.putBoolean("new_window", true)
    intents.putExtras(b)
    context.startActivity(intents)
}

答案 1 :(得分:0)

您可以改用chrome自定义标签 要使用它,您需要在gradle中添加以下依赖项

compile 'com.android.support:customtabs:23.1.1'

现在使用下面的代码打开网址

 CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
        builder.enableUrlBarHiding();
        builder.setShowTitle(true);
        builder.setToolbarColor(Color.TRANSPARENT);
        CustomTabsIntent customTabsIntent = builder.build();
        customTabsIntent.launchUrl(getActivity(), Uri.parse(url));