我正在尝试学习如何开发 Android 应用程序,并且我在网络上发现了一个非常有用的教程,该教程试图创建一个简单的音乐播放器。
尽管我遵循了它,但我遇到了一个问题: 当我尝试运行该应用程序时,编译器中没有出现任何错误,但在模拟器上该应用程序不会启动,并显示以下错误消息:
Unfortunately, MusicPlayer has stopped.
这是代码:
public class MainActivity extends AppCompatActivity {
private ArrayList<Song> songList;
private ListView songView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
songView = (ListView) findViewById(R.id.song_list);
songList = new ArrayList<Song>();
getSongList();
}
public void getSongList(){
// retrieve song info
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
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);
//add songs to list
do {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
songList.add(new Song(thisId, thisTitle, thisArtist));
}
while (musicCursor.moveToNext());
}
}
}
稍微检查了一下代码后,我发现当我调用以下命令时应用程序崩溃了:
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
知道问题出在哪里吗?
最佳答案
查看此处的文档:https://developer.android.com/guide/topics/providers/content-provider-basics.html
您需要传递比实际更多的参数。第二个参数应该是列名的字符串数组,如果没有它,您将无法选择任何数据。
文档 fragment :
// Queries the user dictionary and returns results
mCursor = getContentResolver().query(
UserDictionary.Words.CONTENT_URI, // The content URI of the words table
mProjection, // The columns to return for each row
mSelectionClause // Selection criteria
mSelectionArgs, // Selection criteria
mSortOrder); // The sort order for the returned rows
关于java - 无法从 Android 设备获取所有歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44930019/