VOLUME_EXTERNAL 要求 API 级别为 29。

5
Android文档中,他们说:

在API <= 28上使用VOLUME_EXTERNAL

但这也需要API级别29,并且它不会将媒体文件保存到MediaStore。
 MediaStore.Audio.Media.IS_PENDING
 MediaStore.Video.Media.RELATIVE_PATH
 MediaStore.Video.Media.DATE_TAKEN

同时需要API 29,所以我觉得文档不够清晰,或者是我遗漏了什么?还有,在Android 10以下如何保存媒体文件。


2
我在同一个部分被阻塞了。我正在尝试拍照或从图库中选择一张照片并设置为个人资料,但由于某种原因,我无法弄清楚它的工作原理。如果您输入val collection = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY) } else { MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL) },则会返回相同的警告。 - AndroidRuntimeException
1个回答

5
尽管 MediaStore.VOLUME_EXTERNAL 是在 API 29 中添加的,但只要将 targetSdkVersioncompileSdkVersion 设为 29+,就可以放心使用它。我已在 API 16 上进行了测试,这个常量并没有使我的应用崩溃。
不过,如果您认为这个警告很烦人,可以使用 MediaStore.<MediaType>.EXTERNAL_CONTENT_URI。它将返回与 MediaStore.<MediaType>.getContentUri(MediaStore.VOLUME_EXTERNAL) 相同的值。
例如,MediaStore.Downloads.EXTERNAL_CONTENT_URI 将等于 MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL),即 content://media/external/downloads
此外,您可以通过 @SuppressLint("InlinedApi") 忽略此警告。

1
你知道这对于DATE_TAKEN和RELATIVE_PATH MediaColumns也是真的吗? - Guilherme Santos
1
MediaStore.<MediaType>.EXTERNAL_CONTENT_URI 对于文件类型的媒体不可用。 - Akshay Kalola
嘿@AkshayKalola,你找到文件的解决方案了吗? - Waqas Younis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接