要使用API 29的媒体存储访问功能,你可以按照以下步骤进行操作:
MediaStore
类来访问媒体存储。例如,你可以使用以下代码获取媒体文件的列表:String[] projection = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME };
String selection = MediaStore.Images.Media.MIME_TYPE + "=?";
String[] selectionArgs = { "image/jpeg" };
String sortOrder = MediaStore.Images.Media.DATE_ADDED + " DESC";
Cursor cursor = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
sortOrder
);
if (cursor != null) {
while (cursor.moveToNext()) {
String imageId = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media._ID));
String imageName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
// 在这里处理媒体文件
Log.d("Media", "Image ID: " + imageId + ", Name: " + imageName);
}
cursor.close();
}
ContentResolver
的方法。例如,你可以使用以下代码将图片复制到另一个目录:Uri sourceUri = Uri.parse("content://media/external/images/media/123");
Uri destinationUri = Uri.fromFile(new File("/path/to/destination/image.jpg"));
try {
InputStream inputStream = getContentResolver().openInputStream(sourceUri);
OutputStream outputStream = new FileOutputStream(destinationUri.getPath());
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
请注意,这只是一些使用API 29的媒体存储访问的示例代码,你可以根据你的具体需求进行修改和扩展。