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上获取文件路径播放音频有所帮助!