似乎使用 API32,contentResolver 不再适用于 MMS 附件
val partURI = Uri.parse("content://mms/part/$partId")
val inputStream = context.contentResolver.openInputStream(partURI)
inputStream?.let { inputStream2 ->
val file = File(context.getExternalFilesDir(null), fileName)
FileOutputStream(file).use { outputStream ->
val buffer = ByteArray(1024)
var read: Int
while (inputStream.read(buffer).also { read = it } != -1) {
outputStream.write(buffer, 0, read)
}
outputStream.flush()
}
}
inputStream?.close()
尝试打开 InputStream 导致异常:java.io.FileNotFoundException:找不到列 _data。
有人知道如何使用 API 33 从 MMS 部件(附件)读取数据吗?
在清单中我有:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO"/>
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO"/>
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES"/>
我动态请求所有关键权限: