为什么查询Androids MediaStore会返回空光标?

时间:2012-09-14 00:26:57

标签: java android api video mediastore

我正在使用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);

3 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题。打印堆栈跟踪重新启动了该问题。 请在Manifest中添加此权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

答案 1 :(得分:0)

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

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"
                            + Environment.getExternalStorageDirectory())));

答案 2 :(得分:0)

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

我刚刚开发了一个必须访问手机上所有图片的应用程序,并且在插入手机时它无法正常工作。但是,如果我拔掉它,它的工作原理会很好。