【问题标题】:Media Query Cursor keeps returning null on emulator and device....but why?Media Query Cursor 在模拟器和设备上不断返回 null ......但为什么呢?
【发布时间】:2012-05-19 00:17:51
【问题描述】:

我正在使用以下代码获取设备上的歌曲列表。最终我想用它们做更多的事情,但刚开始我想在 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);
            }
        }
    }
}

我的股票音乐播放器可以很好地播放我的手机音频..

编辑:

我刚刚删除了对光标为空和光标为空的检查,我似乎得到了一个结果..奇怪为什么光标为空而 while(c.MoveToNext())... 返回值。 .. 嗯

【问题讨论】:

    标签: android mediastore


    【解决方案1】:

    你的检查是if (c != null) {},但我想是if (c == null) {}(如果你检查光标为空)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多