5

電話のSDカードで利用可能なすべての画像をリストする必要があるアプリケーションを作成しています。

ContentResolver の方法でクエリを実行してみました

Cursor image = getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, new String[]{Images.Media._ID,Images.Media.DATA,Images.Media.DISPLAY_NAME}, null, null, null);

しかし、結果はありません。

リストを取得する方法はありますか、それが不可能な場合、ユーザーがファイルを選択してからユーザーが選択したファイルのパスにアクセスできるようにする意図 (PICK など) はありますか?

4

2 に答える 2

9
//where contextObject is your activity
ContentResolver cr = contextObject.getContentResolver();

String[] columns = new String[] {
                ImageColumns._ID,
                ImageColumns.TITLE,
                ImageColumns.DATA,
                ImageColumns.MIME_TYPE,
                ImageColumns.SIZE };
cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                columns, null, null, null);

私のコードは(分解されていることを除いて)あなたのコードとほとんど同じで、機能します。ギャラリーインテントに何かを尋ねる必要はありません。うまくいくはずです。私の2つの推測は次のとおりです。

1)USBストレージがマウントされていないことを確認します。マウントされている場合は、外部イメージが表示されません。

2)おそらく権限の問題ですか?GLOBAL_SEARCH権限を追加して、それがまったく役立つかどうかを確認してください。

于 2010-06-11T07:39:32.200 に答える
1

次のように、ギャラリー アクティビティを使用して画像を選択できます。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_IMAGE);

アクティビティのコールバックでは、ファイル uri がインテント パラメータになります。

于 2010-06-11T05:57:56.240 に答える