将字符串转换为Uri

如何将字符串转换为Java (Android)的Uri ?例如:

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

myUri = ??;

363432 次浏览

你可以从Uri中使用parse静态方法

//...
import android.net.Uri;
//...


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

你要对URI做什么?

例如,如果你只是将它与HttpGet一起使用,你可以在创建HttpGet实例时直接使用字符串。

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

我只是使用java.net 。 在这里您可以执行以下操作:

...
import java.net.URI;
...


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

你可以使用Uri.parse() .parse(将一个String解析为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);
}

android URIUri之间有区别。

如果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());

如果你正在使用芬兰湾的科特林和Kotlin android扩展,那么有一个漂亮的方法来做这件事。

val uri = myUriString.toUri()

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

  repositories {
google()
}


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

你也可以这样做

对于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"));
import java.net.URI;

以下也适用于我:

URI uri = URI.create("http://stackoverflow.com");

URI uri = new URI("http://stackoverflow.com");