yangliuhou4897 2016-11-25 17:28 采纳率: 0%
浏览 1973

为什么用Android的MediaStore查不到SD卡的音乐,权限里已经设置了

 import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {
private ListView list;
private List<Map<String, String>> musicList = 
new ArrayList<Map<String, String>>();
private SimpleAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main);
        //musicList=loadSongs();

        list=(ListView) super.findViewById(R.id.listView1);
        adapter = new SimpleAdapter(getApplicationContext(), musicList,
                R.layout.item, new String[] { "name", "artist",
                        "time", "data", "id" }, new int[] {
                        R.id.name, R.id.songer, R.id.time,
                        R.id.path, R.id.musicRating });
        list.setAdapter(adapter);

    }

    public List<Map<String, String>> getmusic(){
    ContentResolver musicResolver = this.getContentResolver();
    Cursor cursor = /*getContentResolver()*/  musicResolver
            .query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,  
                    new String[] { MediaStore.Audio.Media.TITLE,  
                            MediaStore.Audio.Media.DURATION,  
                            MediaStore.Audio.Media.ALBUM,  
                            MediaStore.Audio.Media.ARTIST,  
                            MediaStore.Audio.Media._ID,  
                            MediaStore.Audio.Media.DATA,  
                            MediaStore.Audio.Media.DISPLAY_NAME }, null,  
                    null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  

    if (cursor != null && cursor.moveToFirst()) {  
        do {  

            /*String mName = cursor.getString(0);  
            long mTime = cursor.getLong(1);  
            String mAlbum = cursor.getString(2);  
            String mArtist = cursor.getString(3);  
            long mId = cursor.getLong(4);  
            String mData = cursor.getString(5);  */
            String mName =cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
            int mTime=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
            String mAlbum=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
            String mArtist=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
            int mId=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
            String mData=cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
            String mDisplay = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));

            HashMap a = new HashMap();  
            a.put("name", mName);  
            a.put("time", mTime);  
            //a.put("time1", mTime);  
            a.put("album", mAlbum);  
            a.put("artist", mArtist);  
            a.put("id", mId);  
            a.put("data", mData);  
            a.put("display", mDisplay);

            musicList.add(a);//ArrayList  
            System.out.println(mName + "-->" + mTime + "---->>--" + mData);  
        } while (cursor.moveToNext());  
    }  
    if (!cursor.isClosed()) {  
        cursor.close();  
    }
    return musicList;  
    }   
}

  • 写回答

1条回答

  • Code-Porter 博客专家认证 2016-11-26 02:26
    关注

    内容提供者只能获取到手机SD卡内的音乐,外置SD卡获取不到的。

    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀