簡単にUriの仕組みなどを知りたい人向け。

 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)