SDカードからすべてのmp3ファイルを一覧表示するアプリケーションを作成しようとしています。
String[] columns = new String[] {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.TITLE_KEY,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.TRACK
};
String uristr_t = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.getPath();
Cursor musicCursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
columns, null, null, null);
if(musicCursor != null){
mSongs = new ArrayList<SongInfo>( musicCursor.getCount());
boolean isMediaFilesExist = musicCursor.moveToFirst();
...
SD カードにいくつかの mp3 ファイルがありますが、musicCursor.GetCount() は 0 を返します。パスが間違っていると思われます。EXTERNAL_CONTENT_URIcontent://media/external/audio/media
とそのパスは次のとおりです。
/external/audio/media
しかし、私のSDカードのパスは次のとおりです。
/mnt/sdcard
そして、Uri を手動で設定しようとしました:
String uriStr = "content://" + Environment.getExternalStorageDirectory().getPath();
Uri sdCardUri = Uri.parse(uriStr);
Cursor musicCursor = managedQuery(sdCardUri, columns, null, null, null);
その場合、Uri は ですcontent:///mnt/sdcard
が、musicCursor は managedQuery の後で null です。uriStr の形式が正しくなく、Uri の初期化が間違っている可能性がありますか? ありがとう!