Odpowiedzi:
Możesz użyć parse
metody statycznej zUri
Uri myUri = Uri.parse("http://stackoverflow.com")
Uri
klasa z parse
metodą developer.android.com/reference/android/net/Uri.html . Istnieje również URI
klasa developer.android.com/reference/java/net/URI.html bez parse
metody. Więc właściwą klasą jest Uri
. Upewnij się, że masz poprawny import
create
metody. Jest tak prosty w użyciu jak Uri. Więc jakie masz korzyści z Uri?
Jeśli używasz rozszerzeń Kotlin i Kotlin dla Androida, istnieje piękny sposób na zrobienie tego.
val uri = myUriString.toUri()
Aby dodać rozszerzenia Kotlin ( KTX ) do projektu, dodaj następujące elementy do pliku build.gradle modułu aplikacji
repositories {
google()
}
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-rc01'
}
Możesz przeanalizować String do Uri za pomocą Uri.parse (), jak pokazano poniżej:
Uri myUri = Uri.parse("http://stackoverflow.com");
Poniżej znajduje się przykład użycia nowo utworzonego identyfikatora Uri w niejawnej intencji. Do przeglądania w przeglądarce na telefonie użytkownika.
// 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);
}
Uwaga: istnieje różnica między identyfikatorami URI i Uri systemu Android .
Co zamierzasz zrobić z identyfikatorem URI?
Jeśli zamierzasz używać go na przykład z HttpGet, możesz po prostu użyć ciągu bezpośrednio podczas tworzenia wystąpienia HttpGet.
HttpGet get = new HttpGet("http://stackoverflow.com");
android.widget.ImageView.setImageURI
nie - więc jest to całkowicie uzasadnione pytanie.
Parser Javy java.net.URI
zawiedzie, jeśli identyfikator URI nie zostanie w pełni zakodowany zgodnie ze swoimi standardami. Na przykład, spróbuj przeanalizować: http://www.google.com/search?q=cat|dog
. Dla pionowego paska zostanie zgłoszony wyjątek.
urllib ułatwia konwersję ciągu znaków na plik java.net.URI
. Będzie wstępnie przetwarzać i usuwać adres URL.
assertEquals("http://www.google.com/search?q=cat%7Cdog",
Urls.createURI("http://www.google.com/search?q=cat|dog").toString());