当前位置: 首页 > 知识库问答 >
问题:

获取特定文件夹的MediaStore路径

隆兴修
2023-03-14

我正在为我的应用程序创建一个更新,其中有一个文件夹,其中包含保存的图像,我想在GridView中显示。我已经在使用离子库了。库的创建者(Koush Dutta)已经有了一个示例,可以做我想要的事情,并在GridView中显示SD卡中的所有图像。。

我想做的是在GridView中仅显示SD卡上特定文件夹(称为漫画)中的图像。我直接使用上面示例中的代码,只修改了一些名称。

我的问题是,我无法仅将SD卡中的图像放入GridView,目前它将从SD卡中获取所有图像。我只想从文件夹/sdcard/Comics/

密码

public class SavedComics extends Activity {
    private MyAdapter mAdapter;

    // Adapter to populate and imageview from an url contained in the array adapter
    private class MyAdapter extends ArrayAdapter<String> {
        public MyAdapter(Context context) {
            super(context, 0);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // see if we need to load more to get 40, otherwise populate the adapter
            if (position > getCount() - 4)
                loadMore();

            if (convertView == null)
                convertView = getLayoutInflater().inflate(R.layout.image, null);

            // find the image view
            final ImageView iv = (ImageView) convertView.findViewById(R.id.comic);

            // select the image view
            Ion.with(iv)
            .centerCrop()
            .error(R.drawable.error)
            .load(getItem(position));

            return convertView;
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.gallery);

        int cols = getResources().getDisplayMetrics().widthPixels / getResources().getDisplayMetrics().densityDpi * 2;
        GridView view = (GridView) findViewById(R.id.results);
        view.setNumColumns(cols);
        mAdapter = new MyAdapter(this);
        view.setAdapter(mAdapter);

        loadMore();
    }

    Cursor mediaCursor;
    public void loadMore() {
        if (mediaCursor == null) {
            mediaCursor = getContentResolver().query(MediaStore.Files.getContentUri("external"), null, null, null, null);
        }

        int loaded = 0;
        while (mediaCursor.moveToNext() && loaded < 10) {
            // get the media type. ion can show images for both regular images AND video.
            int mediaType = mediaCursor.getInt(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.MEDIA_TYPE));
            if (mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
                && mediaType != MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO) {
                continue;
            }

            loaded++;

            String uri = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA));
            File file = new File(uri);
            // turn this into a file uri if necessary/possible
            if (file.exists())
                mAdapter.add(file.toURI().toString());
            else
                mAdapter.add(uri);
        }
    }
}

我尝试了几件事,其中一个是这样的答案:

getContentResolver().query(
                   uri1, Selection, 
                   android.provider.MediaStore.Audio.Media.DATA + " like ? ", 
                   new String[] {str}, null);

共有1个答案

於英朗
2023-03-14

在这个答案的帮助下,我才弄明白。

事实证明,你所需要做的就是使用下面的代码来获取光标,它将只从文件夹加载图像。

请注意,我使用Ion库和您的代码对此进行了测试,它对我有用!

mediaCursor = getContentResolver().query(
    MediaStore.Files.getContentUri("external"),
    null,
    MediaStore.Images.Media.DATA + " like ? ",
    new String[] {"%comics%"},
    null
);
 类似资料:
  • 因此,我有以下代码用于使用mediastore获取图像: 这是一个很好的获取图片文件夹中所有图片的工具,我想把它改为获取特定文件夹中的所有图片,这些图片将作为字符串传递。e、 g

  • 本文向大家介绍C++实现读取特定路径下文件夹及文件名的方法,包括了C++实现读取特定路径下文件夹及文件名的方法的使用技巧和注意事项,需要的朋友参考一下 本文所述实例代码主要实现读取给定路径下的所有文件夹名称或所有带后缀的文件名的功能。具体解决方法如下:   主要用到了以下几个头文件(类):io.h, fstream, string。   首先,读取某给定路径下所有文件夹与文件名称,并带完整路径。实

  • 问题内容: 我需要在WebContent目录中获取文件的真实路径,以便我使用的框架可以访问该文件。它仅将String文件作为属性,因此我需要在WebContent目录中获取此文件的真实路径。 我使用Spring Framework,因此应该可以在Spring中解决。 问题答案: 如果您在servlet中需要此功能,请使用!

  • 是否有tar命令来排除子目录,但包括文件夹根目录中的每个文件,然后将它们放在特定路径上? 我想省略每个子目录,只保留文件的最大最小深度= 1。我尝试了以下方法,但不起作用:

  • 假设标准maven设置。 在Java中,我如何获得文件的绝对路径?

  • 问题内容: 我正在使用此代码来获取给定文件夹中的所有文件。有没有办法只获取文件夹? 问题答案: