Android 11 获取文件路径播放音频教程
引言
在Android 11及以上版本中,由于隐私政策的更新,获取文件路径变得更加困难。本文将教会刚入行的开发者如何在Android 11上获取文件路径并播放音频。
整体流程
以下是获取文件路径播放音频的整体流程:
journey
title 整体流程
section 步骤1: 请求存储权限
section 步骤2: 使用Storage Access Framework获取文件路径
section 步骤3: 播放音频
步骤1: 请求存储权限
在Android 11中,需要动态请求存储权限来访问外部存储。以下是如何请求存储权限的代码:
// 在AndroidManifest.xml中添加存储权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
// 在Activity中请求权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
PERMISSION_REQUEST_CODE);
} else {
// 已经获得权限,可以继续操作
}
步骤2: 使用Storage Access Framework获取文件路径
在Android 11中,我们需要使用Storage Access Framework(SAF)来获取文件路径。以下是如何使用SAF获取文件路径的代码:
private void openFilePicker() {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, FILE_PICKER_REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == FILE_PICKER_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
if (data != null && data.getData() != null) {
Uri uri = data.getData();
// 使用uri进行后续操作,比如播放音频
}
}
}
步骤3: 播放音频
获取到文件路径后,我们可以使用MediaPlayer类来播放音频。以下是如何播放音频的代码:
private void playAudio(Uri uri) {
MediaPlayer mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(this, uri);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
总结
通过以上步骤,我们可以在Android 11上获取文件路径并播放音频。首先,我们需要请求存储权限,然后使用Storage Access Framework获取文件路径,最后使用MediaPlayer播放音频。
希望这篇文章对你理解如何在Android 11上获取文件路径播放音频有所帮助!