在我的应用中,我需要从用户的库中获取音频文件。
要做到这一点我称之为意图:
Intent selectIntent = new Intent(Intent.ACTION_GET_CONTENT);
selectIntent.setType("audio/*");
startActivityForResult(selectIntent, SONG_REQUEST_CODE);
通过" audio / *"作为setType()方法的一个参数,我得到了每个音频文件,独立于它的扩展名。
我需要做的就是将其过滤为仅允许使用.mp3文件
我尝试通过" .mp3"," audio / .mp3"作为setType()
方法的参数,但它们都不起作用。
答案 0 :(得分:2)
步骤1:找到所需文件类型的MIME类型。就MP3而言,即audio/mpeg
。
步骤2:将该MIME类型传递到setType()
,而不是audio/*
。
请注意,ACTION_GET_CONTENT
与文件扩展名无关,部分原因是ACTION_GET_CONTENT
与文件无关。
答案 1 :(得分:2)
我正在使用以下代码
Intent mp3Intent;
mp3Intent= new Intent();
mp3Intent.setAction(Intent.ACTION_GET_CONTENT);
mp3Intent.setType("audio/mpeg");
startActivityForResult(Intent.createChooser(mp3Intent, getString(R.string.audio_file_title)), REQ_CODE_PICK_SOUNDFILE);
使用以下代码获取 onActivityResult 中的uri - :
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQ_CODE_PICK_SOUNDFILE && resultCode == Activity.RESULT_OK){
if ((data != null) && (data.getData() != null)){
Uri mp3FileUri = data.getData();
// Now you can use that Uri by passing to your MediaPlayer or can use ContentResolver and OutputInputStream() to read MP3 encode byte
}
}
}
有关更多扩展程序和MIME类型,您可以访问here
我认为这可能对你有所帮助。