私はAndroidアプリを開発する方法を勉強しようとしています。単純な音楽プレーヤーを作成しようとしていたウェブ上で見つけた非常に便利なチュートリアルが見つかりました。Androidのデバイスからすべての曲を取得することができません
私はそれに続きましたが、私は問題があります: 私は、アプリケーションを実行しようとすると、私はコンパイラでエラーが発生しないエミュレータでは、アプリケーションが次のエラーで起動しませんメッセージ:「残念ながら、MusicPlayerは停止しました。任意
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
:
これはコードである:私は次のコマンドを呼び出すときにコードをビットを確認した後
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());
}
}
}
、私はアプリケーションがクラッシュしたことが判明しました何が問題なのか? https://developer.android.com/guide/topics/providers/content-provider-basics.html
あなたはあなたがより多くの引数に渡す必要があります:私は本当にそれ
外部記憶装置がエミュレータに存在しない可能性があります。また、あなたはエミュレーターに見つけるためにいくつかの音楽を入れていますか? –
@gymnif私は、問題が、 'query()'関数で選択する列を提供しないことに関連していると思っていましたが、私はそれを純粋にドキュメントに基づいていますが、私はAndroidに慣れていません。これらの 'null'変数はすべてクエリ文でOKですか? – dckuehn
私は自分のプロジェクトにこのような方法を使ったことはありません。私は再帰関数を使用してデバイスのメモリをスキャンし、正常に動作しました –