Android开发图片库路径

时间:2014-10-30 17:16:26

标签: android image path gallery

我正在开发应用程序,它应显示我的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());

3 个答案:

答案 0 :(得分:2)

您似乎正在尝试创建一个显示设备中所有图像的应用,而当前代码仅显示上述目录。

使用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);
        }
}

答案 1 :(得分:0)

使用这两行代码,您将选择存储在默认图库目录中的图像:

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*/

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

答案 2 :(得分:0)

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

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

什么是DIRECTORY_DCIM

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