【Android】DocumentsContract.getDocumentIdの戻り値
お仕事で直面したネタ&メモです。
DocumentsContract.getDocumentId(contentUri)の戻り値が、4.4系と5系で変わってた。
些細な内容なので軽くメモ。
前者は”:”をセパレータとしたKeyValueフォーマットで、webで見るサンプルコードはコレで書かれたものが多いです。
String returnStr = DocumentsContract.getDocumentId(somethingUri); String id = returnStr.split(":")[1];
こんな感じ。
後者の5系ですが、Nexus7で同じAPIたたくと、String型のID値だけが返ってきていました。
つまり、前者のKeyValueフォーマットのValue部分だけが戻ってきます。
KeyValueフォーマットで返ってくる前提で、String.split(":")[1]な書き方してると、ArrayIndexOutOfBoundsExceptionが出ちゃいます。
単にValueを取るだけならば、
String returnStr = DocumentsContract.getDocumentId(somethingUri); String split = returnStr.split(":"); int splitIndex = split.length - 1; String id = split[splitIndex];
こうすれば問題なし。