有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java上下文。getContentResolver()。query()忽略动态创建的文件夹

我有一个应用程序正在将图像文件从手机的媒体目录复制到应用程序正在动态创建的目录中。但是,在执行上下文时。getContentResolver()。query(),我试图查询的文件夹返回一个零光标。getCount()。我花了一天的大部分时间在stackoverflow和其他开发网站上试图弄明白这一点,但我还没有找到任何有希望的答案或澄清。我也读过内容提供商和上下文类,但是,似乎没有任何东西表明我做错了什么

为了提供更多细节:在下面的代码中,我有以下SelectionAgs(“/%Event?”)。如代码所示,“Event”是路径“/storage/emulated/0/PicShare/20140630_1624937_Event_Party”中包含的目录的部分名称这是动态创建的。这将返回一个计数为零的游标。但是,如果我将SelectionAgs更改为“%/Pictures%”(这是默认的图像目录),它将返回一个包含该目录中图像的光标(这是我所期望的)。因此,为了测试我的图像和“%Event%”目录是否确实存在(除了在手机的文件系统中手动验证,我确认了这一点),我在“Pictures”目录下添加了我的“PicShare”和子目录,当我运行应用程序时,查询(“%/Pictures”)返回所有图片(与以前一样),包括由位于“%PicShare/20140630_1624937_Event_Party at Rockert!”中的应用程序动态添加的图片(如预期)

所以,我的问题是,为什么我不能像查询“%/Pictures%”那样显式地查询我的自定义目录“%/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) 个答案

  1. # 1 楼答案

    内容提供商似乎还不知道文件夹/文件。 所以我建议给刚刚拷贝的图片打电话MediaScannerConnection.scanFile()ContentResolver.insert()