【问题标题】:Android development Image Gallery pathAndroid开发图库路径
【发布时间】:2014-12-26 20:49:10
【问题描述】:

我正在开发应用程序,该应用程序应显示我的 SD 卡中的所有图像。它是画廊应用程序,但我无法在 android 中做到这一点 如果我没有提到任何路径,它只会从我提到的路径中获取图像,没有图像只是根目录

String ExternalStorageDirectoryPath = Environment
.getExternalStorageDirectory()
 .getAbsolutePath();
String targetPath = ExternalStorageDirectoryPath + "/dir"; 
File targetDirector = new File(targetPath);
File[] files = targetDirector.listFiles();
for (File file : files){
myImageAdapter.add(file.getAbsolutePath());

【问题讨论】:

  • 你的问题不清楚。请解释这是什么意思:“但我不能让它在 android 中做得有点弱,它只能从我提到的路径中获取图像”。请说明您正在尝试做什么以及什么不起作用,即准确说明您要查找的内容。

标签: android image path gallery


【解决方案1】:

您可以使用此方法获取默认的图库路径

private static String getDefaultGalleryPath() {
    return Environment.getExternalStorageDirectory() + "/" + Environment.DIRECTORY_DCIM + "/";
}

什么是DIRECTORY_DCIM

将设备安装为相机时图片和视频的传统位置。

【讨论】:

    【解决方案2】:

    通过这两行代码,您将选择存储到默认图库目录中的图像:

    File picturesDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    File[] listFiles = picturesDirectory.listFiles();
    

    如果您需要搜索所有 sdcard,请使用此递归方法:

    public static void allFiles(File root, List<File> list){
       for (File node : root.listFiles())
       {
           if (node.isDirectory())
               allFiles(node, list);
           else list.add(node);
       }
    }
    

    然后像这样调用这个方法:

    List<File> allSdCardFiles = new ArrayList<File>();
    allFiles(Environment.getExternalStorageDirectory(), allSdCardFiles);
    
    /*now your list has all the sdcard files, use it like you want*/
    

    无论如何,我想你明白这是一个非常繁重的操作,所以请确保你真的需要它(之后你还必须检查文件的扩展名以检查它们是否是图像,因为这种递归方法返回 ALL sdcard文件);

    【讨论】:

      【解决方案3】:

      您似乎正在尝试制作一个显示设备中所有图像的应用,而当前代码仅显示提到的目录。

      使用 Intent 搜索设备中可用的图像类型文件。

      Intent imageIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
      imageIntent.addCategory(Intent.CATEGORY_OPENABLE);
      imageIntent.setType("image/*");
      imageIntent.setAction(Intent.ACTION_GET_CONTENT);
      startActivityForResult(imageIntent , READ_REQUEST_CODE); // set READ_REQUEST_CODE to 42 in your class
      

      在 onActivityResult() 方法中处理您的结果。

      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      
      if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
      
              Uri uri = null;
              if (data != null) {
                  uri = data.getData();
                  Log.i(TAG, "Uri: " + uri.toString());
                  showImage(uri);
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 2015-10-13
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 2015-01-15
        相关资源
        最近更新 更多