context.getContentResolver()。query()忽略在线上创建的文件夹

时间:2014-06-30 23:03:26

标签: java android

我有一个应用程序正在将图像文件从手机的媒体目录复制到应用程序正在创建的目录中。但是,在执行context.getContentResolver()。query()时,我尝试查询的文件夹返回零cursor.getCount()。我花了大部分时间在stackoverflow和其他开发站点试图解决这个问题,但我还没有找到任何有希望的答案或澄清。我还阅读了内容提供商以及上下文类,但是,似乎并没有任何迹象表明我做错了什么。

提供更多细节:在下面的代码中,我有以下selectionArgs(" /%事件?")。如代码所示,"事件"是Rockert's的路径" / storage / emulated / 0 / PicShare / 20140630_1624937_Event_Party中包含的目录的部分名称!"这是在飞行中创建的。这将返回一个零计数的游标。但是,如果我将selectionArgs更改为"%/ Pictures%" (这是一个默认的图像目录),它返回一个带有该目录中图像的光标(这是我所期望的)。所以,要测试我的图像和"%事件%"目录实际存在(除了在手机上的文件系统中手动验证,我确认了),我添加了我的" PicShare"和#34;图片"和目录,当我运行应用程序时,查询("%/ Pictures")返回所有图片(就像之前一样),包括应用程序(按预期)在&#中添加的图片34;%PicShare / 20140630_1624937_Event_Party在Rockert's!"。

所以,我的问题是,为什么我无法明确查询我的自定义目录"%/ PicShare%"我喜欢"%/图片%"?我已经确认目录和图像存在。我必须遗漏一些东西。非常感谢任何帮助,我提前感谢您的时间。

public int GetEventImageCount(Context context)
{
    int result = 0;         
    // request only the image ID to be returned
    String[] projection = {MediaStore.Images.Media._ID};
    // Create the cursor pointing to the SDCard where directory is created on the fly
    Cursor locCursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                                                          projection, 
                                                          "_data like ? ",
                                                          new String[] {"/%Event%"},  
                                                          null);

    if (locCursor != null)
    {
        result = locCursor.getCount();
    }

    return result;
}

1 个答案:

答案 0 :(得分:0)

似乎内容提供商还不知道文件夹/文件。 因此,我建议您在刚刚复制的图片上致电MediaScannerConnection.scanFile()ContentResolver.insert()