我正在开发应用程序,它应显示我的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());
答案 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?
将设备作为相机安装时传统的图片和视频位置。