Media Query Cursor возвращает ноль на эмуляторе и устройстве ... но почему?

1

Я использую следующий код, чтобы получить список песен на моем устройстве. В конце концов я хотел бы сделать больше с ними, но, чтобы начать работу, я хочу найти аудио/музыку на устройстве Android.

Я использовал этот код для запроса в хранилище носителей, и я продолжаю получать нулевой курсор... Я проверил эти ответы, но они либо не имеют отношения к делу, либо я не понимаю их достаточно для их реализации...

Поблагодарили бы за любую помощь! заранее спасибо

public class AudioFinalActivity extends Activity {

    private TextView tv;
    private String res;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // link text view obj
        tv = (TextView) findViewById(R.id.tv);
        res = "";

         String[] proj = { MediaStore.Audio.Media._ID,
         MediaStore.Audio.Media.DATA,
         MediaStore.Audio.Media.DISPLAY_NAME,
         MediaStore.Audio.Artists.ARTIST };
         // managed query doesn't need startManagingCursor called on the
         Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
         proj, null, null, null);

//      ContentResolver contentResolver = getContentResolver();
//      String[] columns = { MediaColumns.TITLE, AudioColumns.DURATION,
//              MediaColumns.DATA
//      // add more columns if you want to fetch more data
//      };
//
//      Cursor c = contentResolver.query(
//              MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, null,
//              null, null);

        if (c != null) {
            Log.d("AFA", "Cursor returned NULL");
        } else if (c.getCount() < 1) {
            Log.d("AFA", "Cursor query is empty.. :( ...");
        } else {
            // do stuff with our content...
            while (c.moveToNext()) {

                //String title = c.getString(c
                        .getColumnIndex(MediaColumns.TITLE));
                //Long duration = c.getLong(c
                        .getColumnIndex(AudioColumns.DURATION));
                //String data = c.getString(c
                        .getColumnIndex(MediaColumns.DATA));

                //res += title + "\n";
                res +=  c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)) + "\n";
                tv.setText(res);
            }
        }
    }
}

Я фондовый музыкальный плеер может воспроизводить мои телефоны аудио просто отлично..

РЕДАКТИРОВАТЬ:

Я просто удалил проверку на то, что курсор пуст, и для курсора будет null, и я, кажется, получаю результат.. странно, почему курсор имеет значение null еще while (c.MoveToNext())... возвращает значения... hmmm

Теги:
mediastore

1 ответ

1
Лучший ответ

ваша проверка - if (c != null) {}, но я полагаю, что это if (c == null) {} (если вы проверяете, что курсор равен нулю)

  • 0
    вау ... это была глупая ошибка, спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню