3

次の 2 つの場所から読み取ると、一部の写真のみが読み取られます。

File appStorage = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File externalStorage = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

たとえば、ダウンロードした写真は読み取られません。それでも、手動でギャラリー アプリを開くと、すべての写真がそこに表示されます。

では、ギャラリーにあるすべての画像を読み取るにはどうすればよいでしょうか? 基本的に、私はどこを見ますか?

編集:

私の質問は非常に明白だと思いますが、何らかの理由で人々はACTION_PICK. 私はまさに私が上で探していると言っているものを探しています。を使用しACTION_PICKたい場合は、次のコードを使用します。

public void dispatchGalleryIntent(View view) {
        Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(gallery, LOAD_IMAGE_REQUEST_CODE);
    }

ユーザーがギャラリーから画像を選択する必要はありません。いいえ。必要なのは、アプリ自体がギャラリーにあるすべての画像を読み込むことです。これを他にどのように言うべきか本当にわかりません。

ノート:

さらに明確にする必要がある場合は、OPで言及したファイルを読み取るために使用しているコードを次に示します(つまり、appStorageand externalStorage):

void addFiles(final File parent, Set<File> images) {
    try {
        for (final File file : parent.listFiles()) {
            if (!file.isDirectory()) {
                images.add(file);
            } else {
                addFiles(file, images);
            }
        }
    } catch (Exception e) {
    }
}
4

1 に答える 1

1

以下を試してください

File file = Environment.getExternalStorageDirectory();

などの正しい拡張子をフィルタリングする必要がありますjpg, png, etc

編集:

あなたは正しいです。デバイスに存在することさえ知らない奇妙な画像がすべて表示されるため、私のものは優れたソリューションではありません。私は人々を正しい方向に向けようとしていたので、より良い情報を持っている人があなたに答えることができるかもしれません.

一方、私の特定のデバイスでは、Androidサブディレクトリを/storage/sdcard0/Android/.... しかし、他のデバイスがどのように動作するかがわからないため、これが最終的な答えだとは言えません。基本的に、ギャラリー アプリがどのように機能するかを知る必要があります。それよりも、ギャラリー アプリをピギーバックして表示されるすべてのものを取得する方法を知る必要があります。たぶん、使い方がわからないある種のカーソルを使用することによって。

于 2013-05-29T14:13:42.987 に答える