3

我正在使用 Android 的 MediaStore 来检索我用我的应用程序录制的视频文件的持续时间/日期。它适用于较旧的文件,但我记录的最新文件确实返回空(非空)光标。我不明白为什么会发生这种情况,是 MediaStore 没有立即更新还是我在下面使用的代码有问题?谢谢你的帮助!

Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.MediaColumns.DISPLAY_NAME + " LIKE '"+file.getName()+"'";
Cursor cursor = getContentResolver().query(uri, new String[]{MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.DURATION}, selection, null, null);
4

3 回答 3

1

我也面临同样的问题。打印堆栈跟踪解决了这个问题。请在清单中添加此权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
于 2015-11-13T07:17:32.750 回答
0

似乎 MediaScanner 尚未将最新文件扫描到 MediaStore 中。如果外部存储中有新文件,则必须触发。

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
                            + Environment.getExternalStorageDirectory())));
于 2012-09-14T01:29:15.797 回答
0

检查以确保插入您的 Android 设备不会干扰外部存储。如果您的手机安装为 USB 存储设备,那么您将无法直接访问外部存储设备中的文件。您可以通过在手机连接到计算机时打开图库来检查这一点。

我刚刚开发了一个必须访问手机上所有图片的应用程序,它在手机插入时不起作用。但是,如果我拔掉它就可以了。

于 2013-06-25T06:08:01.880 回答