从SD卡中选择一个mp3文件

时间:2017-11-30 19:28:47

标签: android

我需要让用户从他的SD卡中选择一个媒体文件进行播放。以下代码不起作用: 编辑: 在我从SD卡文件夹中选择一个mp3文件后,我无法启动他(玩他)。我认为问题在于它没有进入“onActivityResult”功能。

Intent i = new Intent();
                    i.setType("audio/*");
                    i.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(i, RESULT_OK);    



protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode==RESULT_OK)
    {
        Uri uri =data.getData();
        if(uri!=null) {
            try {
                song.setDataSource(getApplicationContext(), uri);
                song.prepare();
                pl.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        song.start();
                    }
                });
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        super.onActivityResult(CONTEXT_RESTRICTED, RESULT_OK, data);
    }
}

1 个答案:

答案 0 :(得分:0)

你的问题并没有包含一些变量的定义,所以我添加了自己的变量并播放了。试试这个: -

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ...

        Intent i = new Intent();
        i.setType("audio/*");
        i.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(i, 1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
            Uri uri = data.getData();
            if (uri != null) {
                try {
                    MediaPlayer song = new MediaPlayer();
                    song.setDataSource(getApplicationContext(), uri);
                    song.prepare();
                    song.start();
                } catch (Exception e) {
            }
        }
        super.onActivityResult(CONTEXT_RESTRICTED, RESULT_OK, data);
    }
}

MediaPlayer文档here