簡単にUriの仕組みなどを知りたい人向け。
UriはURLのようなもので階層形式になってるものと、email:nullpo@nullpo.comのような階層形式になっていないものがある。
階層形式はURLのようにhttp://www.nullpo.com/nullpo.htm?id=0#01のような形式になっているが、フォーマットは以下のようになる。
androidではUriを利用して情報をやりとりすることがあるが、それを簡単に行うためのクラスがUriである。例えば下記のように利用できる。それぞれメソッドでstringが返されるので、ホストの部分だけ取得したり、ディレクトリの部分だけを取得したりすることができる。
なお該当する部分がない場合(例えば?のクエリがない)などの場合はnullが入るのでnullチェックが必要。
UriはURLのようなもので階層形式になってるものと、email:nullpo@nullpo.comのような階層形式になっていないものがある。
階層形式はURLのようにhttp://www.nullpo.com/nullpo.htm?id=0#01のような形式になっているが、フォーマットは以下のようになる。
[scheme]://[autority][path]?[query]#[fragment]
androidではUriを利用して情報をやりとりすることがあるが、それを簡単に行うためのクラスがUriである。例えば下記のように利用できる。それぞれメソッドでstringが返されるので、ホストの部分だけ取得したり、ディレクトリの部分だけを取得したりすることができる。
なお該当する部分がない場合(例えば?のクエリがない)などの場合はnullが入るのでnullチェックが必要。
//試しにこのようなUriを生成してみる
val uri01: Uri = Uri.parse("content://jp.example.to.MyContentsProvider/tablename/subname?id=0#01")
// jp.example.to.MyContentsProvider が帰ってくる
Log.v("nullpo_authority", uri01.authority)
// jp.example.to.MyContentsProvider
Log.v("nullpo_host", uri01.host)
// subname
Log.v("nullpo_lastPathSegment", uri01.lastPathSegment)
// /tablename/subname
Log.v("nullpo_path", uri01.path)
// content
Log.v("nullpo_scheme", uri01.scheme)
// //jp.example.to.MyContentsProvider/tablename/subname?id=0
Log.v("nullpo_schemeSP", uri01.schemeSpecificPart)
// id=0
Log.v("nullpo_query", uri01.query)
// 01
Log.v("nullpo_fragment", uri01.fragment)