gpt4 book ai didi

java - Android:光标不会返回外部存储中应用程序文件夹中保存的所有视频

转载 作者:行者123 更新时间:2023-12-02 03:07:01 25 4
gpt4 key购买 nike

我目前正在开发视频应用程序,并且可以成功将视频保存到应用程序文件夹。但是当我想在recyclerview中显示应用程序视频时,它不会显示所有视频(当我调试应用程序时,光标不会返回所有视频,当我重新启动设备时,它会返回所有视频,如果出现以下情况,我必须重新启动设备新视频已添加到应用程序文件夹中以查看所有视频)

这是源代码。

public static List<MyVideo> getAppVideos(Context context) {
String[] projection = { MediaStore.Video.Media.DATA, MediaStore.Video.Media.DATE_TAKEN, MediaStore.Video.Media.DURATION};
String selection = MediaStore.Images.Media.BUCKET_ID + " = ?";
String[] selectionArgs = { APP_VIDEO_BUCKET_ID };
Cursor cursor = context.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
MediaStore.Files.FileColumns.DATE_ADDED + " DESC");
ArrayList<MyVideo> result = new ArrayList<MyVideo>(cursor.getCount());
if (cursor.moveToFirst()) {
final int dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
final int dateColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATE_TAKEN);
final int durationColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION);
do {
final String data = cursor.getString(dataColumn);
final String createdDate = cursor.getString(dateColumn);
final String durationTime = cursor.getString(durationColumn);
result.add(new MyVideo(data, DateUtils.convertToSeconds(durationTime), "^ " + DateUtils.getDateFromMilliSeconds(Long.parseLong(createdDate), "MMM dd, yyyy")));

} while (cursor.moveToNext());
}
cursor.close();
return result;


}

最佳答案

1.实际上这是Android的本质。当您将一些新文件添加到外部存储时,将需要一些时间才能将其添加到媒体内容提供程序。Androdid 系统将在特定时间段自动运行媒体扫描。有一个解决方法,您需要触发 Android 系统进行媒体扫描

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(videoAdded)));

2.当您重新启动设备时,它将扫描媒体,您将获得所有视频

关于java - Android:光标不会返回外部存储中应用程序文件夹中保存的所有视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41590516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com