网上找的方法Android13 14都没问题 Android10不行。
对华为畅享20 nova7 适配。
选择音频文件
private ActivityResultLauncher<String[]> mFilePicker;
mFilePicker.launch(new String[]{"audio/*"}); //跳转文件选择器
/回调
mFilePicker = registerForActivityResult(new ActivityResultContracts.OpenMultipleDocuments(), new ActivityResultCallback<List<Uri>>() {
@Override
public void onActivityResult(List<Uri> result) {
if (result != null && !result.isEmpty()) {
// 处理选择的文件
if (result.get(0) != null) {
String str = new UriToPath().getRealPathFromURI(CleanEventAddCallbackSaveActivity.this, result.get(0));
QUtils.out("文件路径" + str);
}
} else {
// 用户取消了文件选择操作
}
}
});
//URI转路径工具类
public class UriToPath {
public String getRealPathFromURI(Context context, Uri uri) {
// 检查是否是文档类型的URI
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
return uriToFileApiQ(context, uri);
} else {
return getRealPathUri(context, uri);
}
}
public String getRealPathUri(Context context, Uri uri) {
if (DocumentsContract.isDocumentUri(context, uri)) {
// 如果是外部存储的文档
if (isExternalStorageDocument(uri)) {
// 外部存储的直接路径
final String docId = DocumentsContract.getDocumentId(uri);
final String[] split = docId.split(":");
final String type =

1559

被折叠的 条评论
为什么被折叠?



