文字列をURIに変換


176

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

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

myUri = ???;

回答:


400

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

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

4
この解決策を試しましたが、問題があります。最初にUriをURIに変更する必要があります(java.netパッケージからの場合)。次に、「解析」コンストラクタがありません。私が間違っていることを何か知っていますか?
ユルゲン・K.

2
メソッドdeveloper.android.com/reference/android/net/Uri.htmlをUri持つクラスがあります。メソッドのないdeveloper.android.com/reference/java/net/URI.htmlクラスもあります。したがって、適切なクラスはです。あなたは正しいインポートを持っていることを確認してくださいparseURIparseUri
ccheneson

1
@cchenesonなぜUriはURIよりも正しいのですか?URIを使用すると、createメソッドを使用できます。Uriと同じくらい簡単に使用できます。では、Uriからどのようなメリットがありますか?
kaba713

そうです。間違った輸入品も私の厄介な問題の1つです。
Omid.N

34

私はjava.net パッケージを使用しています。ここでは、次のことができます。

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

URIはUriとは異なります。
Ali Alaoi

7

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

val uri = myUriString.toUri()

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

  repositories {
    google()
}

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

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);
}

注意: Androids URIUriには違いがあります。


-1

URIをどのように使用しますか?

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

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

2
しかし、たとえばandroid.widget.ImageView.setImageURI、そうではありません—完全に有効な質問です。
マーティン

1
実際にこの質問に答えていない
ユルゲン・K.

-1

java.net.URIURIが標準に完全にエンコードされていない場合、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());
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.