0

SDカードに存在するすべての曲のパスを文字列配列で取得しようとしていますが、配列に保存されていません。それ以外の場合は上書きしています。助けてください、コード....

String[] projection = new String[] {MediaStore.Audio.Media.DATA};
    Cursor mCur = managedQuery(Media.EXTERNAL_CONTENT_URI,projection, null, null, null);
    mCur.moveToFirst();
    path=new String[mCur.getColumnCount()]; 
    while (mCur.isAfterLast() == false) {       
    for (i=0; i<mCur.getColumnCount(); i++) 
    {path[i]=mCur.getString(i);
            System.out.println(",,,,,,,,"+mCur.getColumnCount());
            System.out.println(path[i]+i);}
            mCur.moveToNext(); }
4

2 に答える 2

1

これを試してください、あなたが望むことをするはずです

String[] projection = new String[] {MediaStore.Audio.Media.DATA};
Cursor mCur = managedQuery(Media.EXTERNAL_CONTENT_URI,projection, null, null, null);
// check if there is data returned or not
if (mCur.moveToFirst()) {
    // you should use getCount() rather than getColumnCount()
    // getCount() is the number of rows, while getColumnCount() is the number of columns returned
    // remember your projection?? only return 1 column.
    path = new String[mCur.getCount()]; 
    int whichColumn = mCur.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
    int i = 0;
    do {
        path[i] = mCur.getString(whichColumn);
        i++;
    } while (mCur.moveToNext());
}
于 2012-09-06T07:45:32.813 に答える