随机读取文件夹的内容

时间:2012-09-07 09:56:31

标签: android android-layout android-intent android-widget

我有这段代码可以让我阅读手机图库的内容并随机滚动其内容。

public static Uri getRandomImage(ContentResolver resolver) {

    String[] projection = new String[] {
        BaseColumns._ID

    };

    Random rand = new Random();
    int p = 2 + rand.nextInt(8-2+1); 

    Uri uri = p == 0 ? Media.EXTERNAL_CONTENT_URI : Media.EXTERNAL_CONTENT_URI;

    Cursor cursor =  Media.query(resolver, uri, projection, null, MediaColumns._ID);
    if (cursor == null || cursor.getCount() <= 0) {
            return null;
    }

    cursor.moveToPosition(new Random().nextInt(cursor.getCount()));

    return Uri.withAppendedPath(uri, cursor.getString(0));
}

但是我想修改这段代码来读取我设置的文件夹的内容。我怎么能这样做?

非常感谢

3 个答案:

答案 0 :(得分:0)

可能是最简单的方法之一:用数字命名文件夹中的每个文件,即(假设它们都是jpg)将它们命名为1.jpg,2.jpg,3.jpg等等。现在您需要做的就是在文件夹中的1个文件和多个文件之间生成一系列不同的随机数,并通过将此随机数与.jpg连接起来生成uri,然后显示它们。

答案 1 :(得分:0)

也许你应该将URI设置为不同的值?

Random rand = new Random();
int p = 2 + rand.nextInt(8-2+1); 

Uri uri = p == 0 ? Media.EXTERNAL_CONTENT_URI : Media.EXTERNAL_CONTENT_URI;

此代码始终将URI设置为Media.EXTERNAL_CONTENT_URI ...无论整数p的值是什么... 就个人而言,我实际上甚至看不到你想要做什么......

答案 2 :(得分:0)

获取随机文件或选择目录非常简单。

您可以使用此代码段:

private File getRandomFile(File root) {
    File[] files = root.listFiles();

    Random randomizer = new Random();       
    return files[randomizer.nextInt(files.length - 1)];
}

如果您需要返回Uri的方法,则可以更改返回和方法签名:

private Uri getRandomFile(File root) {
    File[] files = root.listFiles();

    Random randomizer = new Random();       
    File f = files[randomizer.nextInt(files.length - 1)];
    return Uri.fromFile(f); 
}

对于cursor要求,您应该能够将此方法包装到另一个方法并相应地桥接请求。