【问题标题】:How to get images from hidden folder in android如何从android中的隐藏文件夹中获取图像
【发布时间】:2017-11-15 04:01:14
【问题描述】:

我可以从设备的任何指定的非隐藏文件夹中获取所有图像,但是如何从隐藏的指定文件夹中获取所有图像。 只要我在查询中提到我的隐藏文件夹名称,光标就会返回 null

  public static List<MediaData> getAppScannedImages(Context context) {
    Cursor imagecursor = null;
    List<MediaData> gallerydata = new ArrayList<MediaData>();

    try {
        final String orderBy = Images.ImageColumns.DATE_TAKEN + " DESC";
        imagecursor = context.getContentResolver()
                .query(Images.Media.EXTERNAL_CONTENT_URI,
                        projectionImage,
                        Images.Media.BUCKET_DISPLAY_NAME + "='"
                                + ".myHiddenFolder" + "'", null,
                        orderBy);
        if (imagecursor != null) {
            imagecursor.moveToFirst();
            int count = imagecursor.getCount();
            for (int i = 0; i < count; i++) {
                MediaData galData = new MediaData();
                galData.setKey_id(i);
                galData.setId(imagecursor.getString(0));
                galData.setName(imagecursor.getString(1));
                galData.setPath(imagecursor.getString(2));
                galData.setDate(imagecursor.getString(3));
                gallerydata.add(galData);
                imagecursor.moveToNext();
            }
        }


    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (imagecursor != null) {
            imagecursor.close();
        }
    }
    return gallerydata;
}

【问题讨论】:

  • 你试过代码了吗?如果是,那么它是否解决了您的问题?如果您需要进一步说明,请告诉我。

标签: android android-contentresolver


【解决方案1】:

您可以尝试不同的方法。 您必须从 sd 卡中找出隐藏文件夹列表并在所有这些文件夹中搜索图像。

以下代码显示隐藏文件:

public void goTODir(File dir) {

//dir is initail dir like="/mnt/sdcard"
    String imageType = ".jpg";

    File[] listFile = dir.listFiles();

    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                goTODir(listFile[i]);
            } else {
              if (listFile[i].isHidden()){
                        if(listFile[i].getName().endsWith(imageType))
                            {
                              //add to your array list
                               }


              }
            }
        }
    }    
 }

【讨论】:

  • 我不必查询所有隐藏文件夹中的图像,但在上述情况下,只有一个特定文件夹可以说“.myHiddenFolder”。该文件夹仅由应用程序创建,仅包含图像。
  • 您必须在此变量中指定该路径,例如dir="/mnt/sdcard/myHiddenFolder"
【解决方案2】:
String path = Environment.getExternalStorageDirectory().toString();
        File dir = new File(path);
          File listFile[] = dir.listFiles();
          for (int i = 0; i < listFile.length; i++) {
              if(listFile[i].getAbsolutePath().contains("your hidden folder name")){                
                  File dirtest = new File(listFile[i].getAbsolutePath()); 
                  File listFiletest[] = dirtest.listFiles();
                  for (int j = 0; j < listFiletest.length; j++) {
                     get all images from hidden folder
                  }
              }
          }

【讨论】:

    【解决方案3】:

    Kotlin 爱好者

       companion object {
        const val FOLDER_PATH = "/YourFolder/.hideen/"
    }
    
    /**
     * Method to get all Image Path
     * @return [ArrayList]
     * */
    fun getImagePath(): ArrayList<String> {
    
        // image path list
        val list: ArrayList<String> = ArrayList()
    
        // fetching file path from storage
        val file = File(Environment.getExternalStorageDirectory().toString() + FOLDER_PATH)
        val listFile = file.listFiles()
    
        if (listFile != null && listFile.isNullOrEmpty()) {
            Arrays.sort(listFile, LastModifiedFileComparator.LASTMODIFIED_REVERSE)
        }
    
        if (listFile != null) {
            for (imgFile in listFile) {
                if (
                    imgFile.name.endsWith(".jpg")
                    || imgFile.name.endsWith(".jpeg")
                    || imgFile.name.endsWith(".png")
                ) {
                    val model : String = imgFile.absolutePath
                    list.add(model)
                }
            }
        }
    
        // return imgPath List
        return list
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-27
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 2021-10-02
      • 2015-06-06
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      相关资源
      最近更新 更多