我怎样才能得到一个包含视频的所有目录的列表?
How can I get a listing of all directories with videos on them?
使用 Android ContentResolver
我可以获得一个 Cursor
给我视频文件,效果很好,但我看到很多应用程序按目录分隔媒体.
他们如何在不循环 cursor
returns 的所有项目的情况下找出哪些目录有媒体?或者这是唯一的方法吗?
谢谢。
编辑:为了清楚起见,我已经有了查询所有视频、遍历每个视频并提取目录的代码。这是唯一的方法,这似乎很愚蠢。
您正在寻找的解决方案是 android only.You 提供的 FileNameFilter 库,可以这样做
File[] jpgfiles = f.listFiles(new FileFilter() {
@Override
public boolean accept(File file)
{
return(file.getPath().endsWith(".mp4")||file.getPath().endsWith(".webm"));
}
});
// 编辑代码//
File musicDirectory = new File( getExternalFilesDir(Environment.DIRECTORY_MUSIC));
// 希望这个是你要找的 //
您可以像其他视频文件一样放置不同的文件管理器 extentions.I 喜欢添加任何没有媒体文件的目录具有文件名 .nomedia 文件,这也很有用。
我已经测试过了。
来自 github 的参考。
fun getPathList(): Array<String> {
val uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(MediaStore.Video.VideoColumns.DATA)
val cursor = this.contentResolver.query(uri, projection, null, null, null)
val pathArrList = ArrayList<String>()
cursor?.let {
while (it.moveToNext()) {
pathArrList.add(it.getString(0))
}
it.close()
}
return pathArrList.toTypedArray()
}
目前没有办法在不循环的情况下直接从游标结果转到列表。游标在设计上是惰性的,没有本地地图功能。 Anko 提供了一个 parseList 来抽象循环(并关闭游标)并且 return 你想要的列表。
关于原始问题。由于内容可以存在于多个 Uri 桶中(文档、下载等),因此没有一个 Uri 来整理结果。不过,您也许可以在查询中加入 Uris?
使用 Android ContentResolver
我可以获得一个 Cursor
给我视频文件,效果很好,但我看到很多应用程序按目录分隔媒体.
他们如何在不循环 cursor
returns 的所有项目的情况下找出哪些目录有媒体?或者这是唯一的方法吗?
谢谢。
编辑:为了清楚起见,我已经有了查询所有视频、遍历每个视频并提取目录的代码。这是唯一的方法,这似乎很愚蠢。
您正在寻找的解决方案是 android only.You 提供的 FileNameFilter 库,可以这样做
File[] jpgfiles = f.listFiles(new FileFilter() {
@Override
public boolean accept(File file)
{
return(file.getPath().endsWith(".mp4")||file.getPath().endsWith(".webm"));
}
});
// 编辑代码//
File musicDirectory = new File( getExternalFilesDir(Environment.DIRECTORY_MUSIC));
// 希望这个是你要找的 //
您可以像其他视频文件一样放置不同的文件管理器 extentions.I 喜欢添加任何没有媒体文件的目录具有文件名 .nomedia 文件,这也很有用。
我已经测试过了。
来自 github 的参考。
fun getPathList(): Array<String> {
val uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(MediaStore.Video.VideoColumns.DATA)
val cursor = this.contentResolver.query(uri, projection, null, null, null)
val pathArrList = ArrayList<String>()
cursor?.let {
while (it.moveToNext()) {
pathArrList.add(it.getString(0))
}
it.close()
}
return pathArrList.toTypedArray()
}
目前没有办法在不循环的情况下直接从游标结果转到列表。游标在设计上是惰性的,没有本地地图功能。 Anko 提供了一个 parseList 来抽象循环(并关闭游标)并且 return 你想要的列表。
关于原始问题。由于内容可以存在于多个 Uri 桶中(文档、下载等),因此没有一个 Uri 来整理结果。不过,您也许可以在查询中加入 Uris?