activity?.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(copyFile)))
我收到了警告
ACTION_MEDIA_SCANNER_SCAN_FILE已废弃。
在上面的代码中
是否有一个简单的替代代码?
ACTION_MEDIA_SCANNER_SCAN_FILE 已被弃用!
您可以使用以下内容
Java
File file = new File(filePath);
MediaScannerConnection.scanFile(context,
new String[]{file.toString()},
null, null);
科特林
val file = File(filePath)
MediaScannerConnection.scanFile(context, arrayOf(file.toString()),
null, null)
这将请求媒体扫描器扫描指定路径下的文件。值得注意的是,上面的示例中scanFile()方法的第3个和第4个参数为null。但是第三个参数可以用于可选地指定文件的MIME类型,第四个参数可以用于提供监听器以便监听扫描完成事件。
以下是不推荐使用的方法
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
如果您正在使用Media Store API并将其传递给解析器,它将自动触发媒体扫描。以下是一个图像的示例:
val contentValues = ContentValues().apply {
put(MediaStore.MediaColumns.DISPLAY_NAME, "test.jpg")
put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg")
put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES) // requires API level 29
}
// this also adds it to the gallery
contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues)
来自https://developer.android.com/reference/android/content/Intent.html#ACTION_MEDIA_SCANNER_SCAN_FILE
此常量已在API级别29中弃用。调用者应迁移到直接将项目插入MediaStore,每次变异后它们将自动扫描