将字符串转换为Uri

时间:2010-08-15 12:42:33

标签: java android string uri

如何在Java(Android)中将字符串转换为Uri?即:

String myUrl = "http://stackoverflow.com";

myUri = ???;

7 个答案:

答案 0 :(得分:340)

您可以使用parse

中的Uri静态方法
Uri myUri = Uri.parse("http://stackoverflow.com")

答案 1 :(得分:21)

我刚刚使用java.net 套餐。 您可以在此处执行以下操作:

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);

答案 2 :(得分:4)

如果您使用的是 Kotlin 和Kotlin Android扩展程序,那么有一种很好的方法可以做到这一点。

val uri = myUriString.toUri()

要将Kotlin扩展程序( KTX )添加到您的项目,请将以下内容添加到您的应用模块的build.gradle

  repositories {
    google()
}

dependencies {
    implementation 'androidx.core:core-ktx:1.0.0-rc01'
}

答案 3 :(得分:2)

您可以使用 Uri.parse() 将字符串解析为Uri,如下所示:

Uri myUri = Uri.parse("http://stackoverflow.com");

以下是如何在隐式意图中使用新创建的Uri的示例。要在用户手机上的浏览器中查看。

// Creates a new Implicit Intent, passing in our Uri as the second paramater.
Intent webIntent = new Intent(Intent.ACTION_VIEW, myUri);

// Checks to see if there is an Activity capable of handling the intent
if (webIntent.resolveActivity(getPackageManager()) != null){
    startActivity(webIntent);
}

NB: Androids URI Uri 之间存在差异。

答案 4 :(得分:1)

你打算怎么处理这个URI?

例如,如果您打算将它与HttpGet一起使用,则可以在创建HttpGet实例时直接使用该字符串。

HttpGet get = new HttpGet("http://stackoverflow.com");

答案 5 :(得分:0)

如果URI未完全编码到其标准,那么java.net.URI中的Java解析器将会失败。例如,尝试解析:http://www.google.com/search?q=cat|dog。垂直条会抛出异常。

urllib可以轻松将字符串转换为java.net.URI。它将预处理并转义URL。

assertEquals("http://www.google.com/search?q=cat%7Cdog",
    Urls.createURI("http://www.google.com/search?q=cat|dog").toString());

答案 6 :(得分:0)

你也可以这样做

对于http

var response = await http.get(Uri.http("192.168.100.91", "/api/fetch.php"));

对于 https

var response = await http.get(Uri.https("192.168.100.91", "/api/fetch.php"));