回答:
parse
静的メソッドを使用できますUri
Uri myUri = Uri.parse("http://stackoverflow.com")
Uri
持つクラスがあります。メソッドのないdeveloper.android.com/reference/java/net/URI.htmlクラスもあります。したがって、適切なクラスはです。あなたは正しいインポートを持っていることを確認してくださいparse
URI
parse
Uri
create
メソッドを使用できます。Uriと同じくらい簡単に使用できます。では、Uriからどのようなメリットがありますか?
KotlinおよびKotlin android拡張機能を使用している場合、これを実行する美しい方法があります。
val uri = myUriString.toUri()
Kotlin拡張機能(KTX)をプロジェクトに追加するには、アプリモジュールのbuild.gradleに以下を追加します
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
次のように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);
}
java.net.URI
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());