2

私はAndroidデバイス上のすべての画像を次のようにクエリしています:

string[] columns = { MediaStore.Images.Media.InterfaceConsts.Data, 
            MediaStore.Images.Media.InterfaceConsts.Id };
string orderBy = MediaStore.Images.Media.InterfaceConsts.Id;
var imagecursor = ManagedQuery(MediaStore.Images.Media.ExternalContentUri, columns, null, null, orderBy);
for (int i = 0; i < this.Count; i++) {
    imagecursor.MoveToPosition(i);
    Paths[i]= imagecursor.GetString(dataColumnIndex);
    Console.WriteLine(Paths[i]);
    Console.WriteLine(System.IO.File.Exists(Paths[i]));
}

問題は、一部のファイルが存在しないことが出力に示されることです。出力例を次に示します。

/storage/sdcard0/Download/On-Yom-Kippur-Jews-choose-different-shoes-VSETQJ6-x-large.jpg
False
/storage/sdcard0/Download/397277_10151250943161341_876027377_n.jpg
False
/storage/sdcard0/Download/Roxy_Cottontail_&_Melo-X_Present ..._Some_Bunny_Love's_You.jpg
False
/storage/sdcard0/Download/album-The-Rolling-Stones-Some-Girls.jpg
True
/storage/sdcard0/Download/some-people-ust-dont-appreciate-fashion[1 ].jpg
True
/storage/sdcard0/Download/express.gif
True
...
/storage/sdcard0/Download/some-joys-are-expressed-better-in-silence.JPG
False

これはどのように可能ですか?これらの画像を自分でインターネットからダウンロードしました。それらはディスクに存在する必要があります。

4

2 に答える 2

0

LoaderMananger / ManagedQueryを使用して、Androidのメディアコンテンツプロバイダーにクエリを実行しているようです。コンテンツプロバイダーは、さまざまなアプリから特定のSQLiteデータベースにアクセスするための単なる方法です。Androidが提供するメディアコンテンツプロバイダーを使用する場合は、MediaScannerConnectionを使用して「手動で」更新する必要があります。これは、アプリの実行中に「サービス」が内部で更新される場合とされない場合があるためです。 。

関連するSOの質問をいくつか 示します。AndroidSDカードをスキャンして新しいファイル探し、特定のパス(フォルダー)でメディアスキャナーをトリガーします。方法は?ただし、SDカードをグローバルにスキャンするという答えはお勧めしません。

于 2012-10-12T20:13:13.763 に答える
0

これが Samsung デバイスの場合、これらのパスはすべて正しくない可能性があります。

// これをコードに入れ、「外部」文字列をログに記録して確認します

String external = Environment.getExternalStorageDirectory();

あなたが言うなら: /storage/sdcard0/

次に、Samsung自身が、この不十分な追加を行う必要があると言っています(APIを壊したと主張しています:)

external = external + "/external_sd/";

これがダウンロードに当てはまるかどうかは定かではありませんが、同様のすべてのサブパスに影響すると思われます。

http://developer.samsung.com/forum/board/thread/view.do?boardName=GeneralB&messageId=162934&messageNumber=1381&startId=zzzzz~&searchType=TITLE&searchText=sdcard

[編集:] 警告 Emptor ! これでも一部の Samsung デバイスでは機能しません。あららぐぐぐぐ

于 2013-05-01T18:09:06.767 に答える