2016-08-02 8 views
1

私はすべてのMediaStoreバケットを見つけたいと思います。 SOに掲載されたすべてのソリューションは、写真を検索してバケット名を抽出しますが、バケットは空であるため、その特定のバケットのクエリによって返される写真はありません。ギャラリーアプリケーション自体には空のバケット/フォルダは表示されません。AndroidでEMPTYバケット名のリストを照会する方法

答えて

1

BUCKET_IDは、プロバイダーがメディアとみなすメディアに基づいています。 はMediaStore.MediaColumnsDATA列から自動的に計算されます。 DATAは、ディスク上のファイルへのパスです。 ディレクトリにメディアがない場合、DATAはなく、結果としてBUCKET_IDプロパティの作成は行われません。

空のバケットと空でないバケットを共通のプロパティで区別する必要がある場合は、各ディレクトリに固有のパスがあるため、そのパスfile.getPath()を使用してください。

デバイス内にメディアが含まれているディレクトリが10個あり、デバイスにメディア以外のディレクトリが1000個以上あることが考えられます。したがって、あなたがMediaStoreを照会するたびに、アンドロイドがあなたのデバイスの既存のすべてのディレクトリを検索するのは不合理です。

したがって、MediaStoreの目的は「メディアのみ」のファイルへのアクセスが高速であるため、Androidの空のディレクトリにIDを割り当てないのは、メディアが内部にあるディレクトリのIDを使って検索する理由です。

+0

は、10のメディアディレクトリの制限が文書化されていますか?私はあなたの記述を似たように実装しましたが、PICTURESディレクトリに10個以上のディレクトリを作成できました。イメージが配置されると、MediaStoreは適切なBUCKET_IDを生成していました。 –

+0

は10のメディアディレクトリの制限が文書化されていますか? '私の3番目の段落を編集しました。この10の数字は、説明を簡単にするための単なる想像上の例ではありません。 – Eftekhari

関連する問題