Java(Android)で文字列をUriに変換するにはどうすればよいですか?すなわち:
String myUrl = "http://stackoverflow.com";
myUri = ???;
parse
からUri
静的メソッドを使用できます。
Uri myUri = Uri.parse("http://stackoverflow.com")
私はただJava.net
packageを使用しています。ここでは、次のことができます。
String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
KotlinおよびKotlin Android拡張機能を使用している場合、これを行う美しい方法があります。
val uri = myUriString.toUri()
プロジェクトにKotlin拡張機能(KTX)を追加するには、以下をアプリモジュールのbuild.gradleに追加します
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
以下に示すようにri.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);
}
URIで何をしますか?
たとえば、HttpGetで使用する場合は、HttpGetインスタンスを作成するときに文字列を直接使用できます。
HttpGet get = new HttpGet("http://stackoverflow.com");
URIがその標準に完全にエンコードされていない場合、Java.net.URI
のJavaパーサーは失敗します。たとえば、http://www.google.com/search?q=cat|dog
を解析してみてください。垂直バーに対して例外がスローされます。
rllib を使用すると、文字列をJava.net.URI
に簡単に変換できます。 URLを前処理してエスケープします。
assertEquals("http://www.google.com/search?q=cat%7Cdog",
Urls.createURI("http://www.google.com/search?q=cat|dog").toString());