web-dev-qa-db-ja.com

文字列をUriに変換

Java(Android)で文字列をUriに変換するにはどうすればよいですか?すなわち:

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

myUri = ???;

147
Techboy

parseからUri静的メソッドを使用できます。

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

私はただJava.netpackageを使用しています。ここでは、次のことができます。

String myUrl = "http://stackoverflow.com";
URI myURI = new URI(myUrl);
23
Jürgen K.

KotlinおよびKotlin Android拡張機能を使用している場合、これを行う美しい方法があります。

val uri = myUriString.toUri()

プロジェクトにKotlin拡張機能(KTX)を追加するには、以下をアプリモジュールのbuild.gradleに追加します

  repositories {
    google()
}

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

以下に示すように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);
}

NB:Androidには違いがありますURIおよびri

2
JSON C11

URIで何をしますか?

たとえば、HttpGetで使用する場合は、HttpGetインスタンスを作成するときに文字列を直接使用できます。

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

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());
0
EricE