列出SD卡中的所有图像

2023-12-22

您好,我正在开发 Android Gallery 应用程序。我正在从 SD 卡中的文件夹中获取图像并将其显示在网格视图上,如下所示

public static ArrayList<String> getFilePaths(){
    ArrayList<String> filePaths = new ArrayList<String>();
    File directory = new File(android.os.Environment.getExternalStorageDirectory() 
             + File.separator + AppConstant.PHOTO_ALBUM);

    // check for directory
    if (directory.isDirectory()){
        // getting list of file paths
        File[] listFiles = directory.listFiles();

        // Check for count
        if (listFiles.length > 0) {
            for (int i = 0; i < listFiles.length; i++){

                String filePath = listFiles[i].getAbsolutePath();

                if (IsSupportedFile(filePath)){
                    // Add image path to array list
                    filePaths.add(filePath);
                }
            }
        }else{
            // image directory is empty
            Toast.makeText(_context,
                    AppConstant.PHOTO_ALBUM
                    + " is empty. Please load some images in it !",
                    Toast.LENGTH_LONG).show();
        }

    } 
    return filePaths;
}

//fetching all image paths
 imagePaths = utils.getFilePaths();
 adapter = new GridViewImageAdapter(GridViewActivity.this, imagePaths, columnWidth);
 // setting grid view adapter
 gridView.setAdapter(adapter);

我想显示SD卡中的所有图像不仅在指定的文件夹中。我不知道该怎么做。

请帮忙。谢谢!


使用此方法。这将返回您 SD 卡内所有图像路径的列表,如果您不需要任何指定的图像扩展名,您可以将其过滤掉。

public ArrayList<String> getFilePaths()
    {


        Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
        String[] projection = {MediaStore.Images.ImageColumns.DATA}; 
        Cursor c = null;
        SortedSet<String> dirList = new TreeSet<String>();
        ArrayList<String> resultIAV = new ArrayList<String>();

         String[] directories = null; 
        if (u != null) 
        { 
            c = managedQuery(u, projection, null, null, null); 
        } 

        if ((c != null) && (c.moveToFirst())) 
        { 
            do 
            {
                String tempDir = c.getString(0);
                tempDir = tempDir.substring(0, tempDir.lastIndexOf("/"));
                try{
                    dirList.add(tempDir);
                }
                catch(Exception e)
                {

                }
            } 
            while (c.moveToNext());
            directories = new String[dirList.size()];
            dirList.toArray(directories);

        }

        for(int i=0;i<dirList.size();i++)
        {
            File imageDir = new File(directories[i]);
            File[] imageList = imageDir.listFiles();
            if(imageList == null)
                continue;
            for (File imagePath : imageList) { 
                try {

                        if(imagePath.isDirectory())
                        {
                            imageList = imagePath.listFiles();

                        }
                        if ( imagePath.getName().contains(".jpg")|| imagePath.getName().contains(".JPG")  
                                || imagePath.getName().contains(".jpeg")|| imagePath.getName().contains(".JPEG")                                    
                                || imagePath.getName().contains(".png") || imagePath.getName().contains(".PNG")
                                || imagePath.getName().contains(".gif") || imagePath.getName().contains(".GIF")
                                || imagePath.getName().contains(".bmp") || imagePath.getName().contains(".BMP")                         
        )
                        {



                            String path= imagePath.getAbsolutePath();
                        resultIAV.add(path);

                        }
                    }
            //  }
            catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return resultIAV;


    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

列出SD卡中的所有图像 的相关文章

  • Android:在对话框中使用日期选择器和时间选择器

    我面临一个我不知道如何解决的问题 我有一个活动 当我单击链接到该活动的菜单的特定项目时 会显示一个对话框 用于添加项目 该项目有日期和时间 但我无法获得DatePicker and TimePicker在此对话框中 我还尝试将活动传递给对话
  • 使用 Retrofit 2.0 发布多部分表单数据,包括图像

    我正在尝试使用 HTTP POST 到服务器改造2 0 MediaType MEDIA TYPE TEXT MediaType parse text plain MediaType MEDIA TYPE IMAGE MediaType pa
  • 在android 10中设置通知操作的背景颜色

    我已经做到了这一点图片链接 https i stack imgur com o0Cel jpg通过关注这篇文章https medium com dcostalloyd90 show incoming voip call notificati
  • GLSurfaceView onDrawFrame 清除行为

    我在使用 GLSurfaceView 时遇到了不同的行为 据我所知 程序有责任清除每帧的缓冲区 颜色和深度 这意味着 如果我不清除缓冲区 我将获得最后一帧的内容 或双缓冲的前一帧 似乎无论在某些设备上如何 缓冲区都会被清除 我在一些测试设备
  • Android:直接截屏到字节 - 跳过保存到文件

    我使用以下代码在 root 设备上截取屏幕截图 sh Runtime getRuntime exec su null null os sh getOutputStream os write system bin screencap p sd
  • Android模拟器收不到推送通知

    我在谷歌云上使用推送通知 但是由于某种原因我无法在模拟器上接收推送通知 然而 当我在真实设备上测试时 同一个应用程序确实会收到通知 有其他人遇到过这个问题或找到解决方案吗 模拟设备具有网络访问权限 并且与真实设备具有相同的 Android
  • 如何在运行时更改android应用程序名称和图标?

    安装 Android 应用程序后 当您按下应用程序中的按钮时 是否可以动态更改应用程序图标和名称 在运行时 这是到目前为止的代码 getPackageManager setComponentEnabledSetting new Compon
  • 具有多个 orderBy 的 Android firebase 查询

    我想检索我的 firebase 数据库中所有类型为 福音 的数据 这是我的数据库 DatabaseReference infoRef FirebaseDatabase getInstance geReference child info i
  • 如何在没有 Google Play 服务的情况下设置 Android 模拟器

    一位客户要求我制作一个应用程序版本 以便在没有 Google Play 服务的设备上运行 有什么方法可以告诉 Android 模拟器在不使用 GPS 的情况下运行应用程序吗 然后我可以测试代码以确保它可以在客户端设备上运行 使用不包含 go
  • 为什么签名的 Android apk 无法在模拟器上运行

    我已经制作了一个android项目的签名apk 每当我的客户尝试在模拟器上运行它时 他都会遇到以下错误消息 D Android android sdk windows tools gt adb install r abc apk 500 K
  • 从滚动视图返回子视图

    我有一个父母ScrollView带有儿童视图 当用户按下后退按钮时 我希望子视图处理该事件 我尝试了一些方法 但似乎都不起作用 按后退按钮会终止活动 public class GameScrollView extends ScrollVie
  • Phonegap - navigator.app.backHistory() 不适用于 HTML 后退按钮

    在我的应用程序中 我使用phonegap 2 6 对于后退按钮 我使用以下函数 document addEventListener backbutton onBackKeyDown false function onBackKeyDown
  • 为并行的小型已知冻结进程创建匿名 AsyncTask 是一个好习惯吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 例如 您要做一些需要几秒钟的事情 并且不想冻结您的 UI 线程 对吗 您可以使用 AsyncTask 但您不想创建外部 或内部 类来解决小冻结问
  • Android Studio 找不到 R.layout.simple_list_item_1 或任何其他默认布局 ID

    ID 之类的东西R layout simple list item 1不显示在 Android Studio 中的自动完成功能中 手动输入名称时也无法解析它们 我正在尝试使用 ArrayAdapter 并且我必须手动创建一个simple l
  • Android Studio 上的 Twitter Kit Fabric Android 模块库

    我在使用适用于 Android 的 Twitter Kit SDK 时遇到问题 我需要将 Twitter Kit SDK 导入到我的项目中的库 模块 我正在使用 Android Studio 我正在使用适用于 Android 的 Fabri
  • Android Wear Preview 未连接到 Wear Emulator

    我正在尝试为 Google Wear 设置开发环境并遵循 Google 的指示 http developer android com training wearables apps creating html但一旦我设置了端口转发 adb
  • 注意通知持续时间

    是否可以将抬头通知的持续时间设置为无限 现在它只显示 5 秒 已经尝试过不同的事情 例如更改类别 但持续时间始终为 5 秒 这是我的代码 Notification notification notificationBuilder setCa
  • 如何添加不确定的进度条

    我的应用程序 UI 是使用 Android 支持库构建的 但目前没有我的应用程序真正需要的 不确定的 进度条的 AppCompat 版本 我宁愿不使用任何第三方库来实现材料设计进度条 所以我想知道是否有人坐在有关为什么它不包含在支持库中的信
  • 如何在android中创建nanohttpd服务器?

    其实我也查过一些问题 然后去github上找了一下 但我是新来的 我无法理解这个例子 我想在android中创建http服务器 这样我就可以在PC浏览器中访问它 我有一个类扩展 nanohttpd 的实例 但服务器无法工作 不知道为什么 我
  • 在Android中创建自定义按钮类

    我正在尝试为我的 Android 应用程序创建自定义按钮类 public class TicTacButton extends Button 我已经在里面设置了所有构造函数TicTacButton并创建了自定义方法和属性 在我的主要活动中

随机推荐

  • 按一列分组并显示另一列的所有结果

    大家好 我正在尝试解决这个问题 但找不到解决方案 我有 2 列 正在尝试按第一列进行选择和分组 并显示第二列中的所有记录 我的桌子是 RegNo Name C117 Mariya Mathew C117 Baino Baby C117 Ma
  • SqlLocalDb 中的 Service Broker 或 SqlDependency?

    Is SqlDependency支持于SqlLocalDb 如果是的话如何启用 回答您主题中有关 Service Broker 的问题 Service Broker 在 LocalDB 中应该可以正常工作 但只有本地队列可用 远程队列在任一
  • CSS Reset 与 * 通配符

    为什么我不能简单地重置 margin 0 padding 0 font size 100 代替 html body div span object iframe h1 h2 h3 h4 h5 h6 p blockquote pre abbr
  • Java 解压缩实用程序的性能不佳

    我注意到 与使用 WinZip 等本机工具相比 Java 中的解压缩工具非常慢 有没有更高效的 Java 第三方库 开源是首选 Edit 以下是使用 Java 内置解决方案与 7zip 的速度比较 我在原来的解决方案中添加了缓冲输入 输出流
  • C# 中的引用传递到底是如何工作的?

    我想知道 C 中的引用传递是如何工作的 如果我通过引用函数传递 WPF DataGrid 控件 并慢慢让该函数将项目添加到其 DataGrid Items 集合中 则 UI 中的 DataGrid 是否会随着每个新的 DataGrid It
  • 在 navbar-fixed-top 之前添加标题图像

    如何添加标题图像 使其显示在导航栏固定顶部的顶部 当用户向下滚动时 导航栏会粘在顶部吗 我尝试将其添加到容器中 但它没有按预期工作 到目前为止 这是我的代码
  • 如何更新具有特定列名的所有表

    我正在尝试更新以 agg 和column name userid 等字符串开头的所有表 但我在网上没有看到任何此类示例 即使我能够找到选择具有特定列名称和表名称的所有表的选项 我也需要执行相同的操作来更新这些表 如下所示 update TA
  • T SQL 分组时选择最小和最大行

    假设我有一个包含很多行的表 如下所示 ID Range Range begining Profit 1 100 150 100 20 2 200 250 200 40 2 3 100 150 100 100 4 450 500 450 90
  • 使用 boost::numpy::ndarray 时出现分段错误

    当我试图通过时 我发现了一个奇怪的段错误boost numpy ndarray作为一个论点 include
  • 从 lxml 获取内部文本

    lxml html fromstring 坚持将所有内容包装在标签中 p默认 从这个标签树来看 p this is b the b good stuff p p 我想提取字符串 this is b the b good stuff 我该怎么
  • 在 Javascript (Meteor) 中将字符串转换为 Mongo ObjectID

    我有一个 Meteor 应用程序 最初我使用 id在我的模板中命名列表项时 我的集合中每条记录的字段 当得到 id字段 我将其转换为字符串以在模板中使用 现在我想更新 Mongo 中的这些记录并传递 id回到一个Meteor method
  • 获取本地文件的内容而不上传[重复]

    这个问题在这里已经有答案了 我正在编写一个离线网络应用程序 允许用户选择本地文件 修改它 然后也在本地保存副本 是否可以在没有任何服务器的情况下 我可以上传文件并返回其base64 但它不是离线的 应用程序只需要在 Google Chrom
  • 使用 Nginx 在单个域上运行多个 React 应用程序

    谁能推荐一个最佳实践 nginx 配置来在单个域上运行多个 React 应用程序 这些应用程序将从不同的根目录提供服务 因此 app1 和 app2 在 www domain com 上运行并获得服务 www domain com app1
  • 如何查看查询执行成功与否?

    我正在使用 codeigniter 2 0 2 这是来自它的用户指南 data array title gt title name gt name date gt date this gt db gt where id id this gt
  • SQL 中的循环行

    我正在寻找类似的输出 最近 日期 评论 第二个最近 日期 评论 Example Book Comments BookA 27 03 13 comment1 21 03 13 comment2 21 03 13 uhuuuu and so o
  • 基于数量的价格计算器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试创建一个简单的脚本来添加到我的 html 网站 我需要它根据用户输入的数量计算价格 例如 1 1000 的值将乘以 1 50 并
  • Flex 4 组显示效果/隐藏效果

    我有一个组 我想在显示和隐藏时执行擦除效果
  • Drupal 7 在“首次加载”时太慢

    我希望有人能帮助我解决这个 Drupal 7 问题 我注意到 当我 第一次 输入网站地址时 加载时间非常慢 开始加载文件和显示内容大约需要 20 平均 秒 好像有一些延迟 然而 在那段时间之后 速度非常快 一切都很好 页面加载后 我们可以快
  • 在 NLTK 解析器中使用整数/日期作为终端

    我正在尝试使用 NLTK 中的 Earley 解析器来解析句子 例如 如果日期早于 12 21 2010 则序列号 10 为此 我尝试编写一个 CFG 但问题是我需要使用日期和整数的通用格式作为终端 而不是特定值 有没有什么方法可以将生产规
  • 列出SD卡中的所有图像

    您好 我正在开发 Android Gallery 应用程序 我正在从 SD 卡中的文件夹中获取图像并将其显示在网格视图上 如下所示 public static ArrayList