В этом уроке:
— узнаем, что такое Uri и Intent-атрибут data
— вызываем системные приложения (браузер, звонилка, карта)
Мы знаем, что Intent имеет атрибут action. С помощью этого атрибута обычно дается указание действия. Например, просмотр или редактирование. Но действие обычно совершается не просто так, а с чем-либо. Значит кроме указания действия, мы должны указывать на объект. с которым эти действия нужно произвести. Для этого Intent имеет атрибут data .
Один из способов присвоения значения этому атрибуту – метод setData (Uri data) у объекта Intent. На вход этому методу подается объект Uri .
Uri – это объект, который берет строку. разбирает ее на составляющие и хранит в себе эту информацию. Строка, конечно, должна быть не любая, а составлена в соответствии с этим документом RFC 2396. Uri имеет кучу методов. которые позволяют извлекать из распарсенной строки отдельные элементы .
Я создам объект Uri из строки, а в лог буду выводить название метода и (через двоеточие) значение, которое он возвращает. Например возьмем такую строку — http адрес:
Смотрим, чего нам возвращают методы:
uri. getScheme(): http
uri. getSchemeSpecificPart(): //developer. android. com/reference/android/net/Uri. html
uri. getAuthority(): developer. android. com
uri. getHost(): developer. android. com
uri. getPath(): /reference/android/net/Uri. html
uri. getLastPathSegment(): Uri. html
Понятия Scheme, Authority, Host, Path и пр. – взяты из RFC дока, ссылку на который я дал выше. Там можно найти их полное описание, понять что они означают и свериться с тем, что нам вернул Uri.
Рассмотрим еще примеры:
FTP
(Код, написанный выше, идет одной строкой на самом деле. Здесь идут пробелы вокруг @ из-за особенностей разметки )
uri. getScheme(): ftp
uri. getSchemeSpecificPart(): // Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. 80/data/files
uri. getAuthority(): Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. 80
uri. getHost(): google. com
uri. getPort(): 80
uri. getPath(): /data/files
uri. getLastPathSegment(): files
uri. getUserInfo(): bob