Android 内容解析程序查询未在sd卡上找到音乐
我构造了一个简单的查询来查找Android emulator SD卡上的音乐。我正在使用Android Studio。我使用adb push在SD卡上放置了3首歌曲。但是,查询没有找到音乐文件。以下是SD卡上音乐文件夹中文件的图像: 下面是我用来执行查询的代码:Android 内容解析程序查询未在sd卡上找到音乐,android,android-emulator,android-contentprovider,android-sdcard,android-contentresolver,Android,Android Emulator,Android Contentprovider,Android Sdcard,Android Contentresolver,我构造了一个简单的查询来查找Android emulator SD卡上的音乐。我正在使用Android Studio。我使用adb push在SD卡上放置了3首歌曲。但是,查询没有找到音乐文件。以下是SD卡上音乐文件夹中文件的图像: 下面是我用来执行查询的代码: ContentResolver musicResolver = getContentResolver(); Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_
ContentResolver musicResolver = getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
// Now we can iterate over the results, first checking that we have valid data:
if(musicCursor!=null && musicCursor.moveToFirst()){
// We first retrieve the column indexes for the data items that we are interested in for each song
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
// then we use these to create a new Song object and add it to the list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
allSongsPlaylist.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
musicCursor不为null,但musicCursor.moveToNext()返回0
我做错了什么?音乐文件显然在SD卡上,但查询没有看到它们。如果我将内容URI更改为INTERNAL_content_URI,则查询将查找内部存储器中的文件(例如piezo alarm),而不是我的音乐文件
我做错了什么
如果非要我猜的话,您是假设MediaStore
知道这些文件
MediaStore
,仅偶尔对外部存储进行索引。它不知道您通过adb推送到那里的文件
对于轻量级测试,请从Play Store中获取一个应用程序,该应用程序将触发一轮重新索引。我以前用过,但显然它不支持Android 4.4+。还有很多其他的,比如,可能对你有用。或者,等一天,明天再试试你的测试,到时候它们可能会自动被接受
以编程方式将文件写入外部存储的开发人员应使用
MediaScannerConnection
和scanFile()
将这些文件编入MediaStore
的索引实际上,这些文件已在前一天推送到sd卡上。但是你的回答让我决定退出模拟器并重新加载它。这似乎奏效了。我总是不愿意退出emulator,因为重新加载要花很长时间。代码现在正在识别这些文件。谢谢