MediaStore-Pfad eines bestimmten Ordners abrufen

Ich erstelle ein Update für meine Anwendung. Darin befindet sich ein Ordner mit gespeicherten Bildern, die ich in einer GridView anzeigen möchte. Ich benutze bereits dasIon Bibliothek. Der Ersteller der Bibliothek (Koush Dutta) hat bereits ein Beispiel, das tut, was ich will, und zeigt alle Bilder aus dem @ a SD-Karte in einer GridView..

Ich möchte nur die Bilder aus einem bestimmten Ordner auf meiner SD-Karte (Comics genannt) in GridView anzeigen. Ich verwende den Code direkt aus dem obigen Beispiel und ändere nur einige Namen.

Mein Proble ist, dass ich nicht nur die Bilder von der SD-Karte in die GridView bekommen kann, sondern derzeit alle Bilder von der SD-Karte. Ich will nur aus dem ordner / sdcard / comics /

Cod

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

ch habe ein paar Dinge ausprobiert, von denen eines etwas iswie diese Antwort:

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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage