换成MediaStore.Video.VideoColumns.SIZE 依旧是0
时间: 2023-12-22 10:02:26 浏览: 18
这种情况可能是因为查询条件不正确导致的。你可以尝试使用以下代码来查询视频文件的大小:
```
Cursor cursor = resolver.query(uri, new String[]{MediaStore.Video.VideoColumns.SIZE}, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.VideoColumns.SIZE));
// 处理文件大小
}
```
请注意,查询条件应该根据你实际的需求进行筛选,例如,可以通过 MediaStore.Video.VideoColumns.DATA 来限制查询结果只包括某个特定路径下的视频文件,或者通过其他字段来筛选满足特定条件的视频文件。
相关问题
添加了查询条件new String[]{MediaStore.Video.VideoColumns.SIZE}结果依然是0
如果你使用了正确的查询条件,并且仍然无法获取到文件大小,那么可能是因为媒体库中缓存的信息没有及时更新导致的。这种情况下,你可以尝试使用 MediaScannerConnection 来强制更新媒体库信息。具体方法如下:
```
MediaScannerConnection.scanFile(context, new String[] { file.getAbsolutePath() }, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
// 重新查询文件大小
Cursor cursor = resolver.query(uri, new String[]{MediaStore.Video.VideoColumns.SIZE}, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Video.VideoColumns.SIZE));
// 处理文件大小
}
}
});
```
这段代码会强制扫描指定的文件,更新媒体库中的信息。在扫描完成后,你可以重新查询文件大小,应该能够获取到正确的结果。
oppo手机无法使用MediaStore.Video.Media.EXTERNAL_CONTENT_URI
这可能是由于以下原因之一导致的:
1. 您的应用程序没有获取适当的存储权限。请确保您的应用程序已经请求了适当的存储权限。
2. 您的设备没有安装相应的视频播放器应用程序。请尝试安装一个视频播放器应用程序,例如 MX Player 或 VLC。
3. 您的设备上的媒体扫描程序可能需要更新。尝试使用以下代码强制刷新媒体库:
```
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(filePath))));
```
如果您已经尝试了以上方法,并且仍然无法使用 MediaStore.Video.Media.EXTERNAL_CONTENT_URI,请尝试在您的应用程序中使用其他方法来访问媒体文件。