본문 바로가기

파이어몽키

[안드로이드] 포토 라이브러리 목록 불러오기



안드로이드 내부 저장소에 저장된 사진의 썸네일 목록을 가져오는 코드입니다.


uses
  Androidapi.Helpers, Androidapi.JNI.Net, Androidapi.JNIBridge,
  Androidapi.JNI.Provider, Androidapi.JNI.GraphicsContentViewText,
  FMX.Helpers.Android, Androidapi.JNI.JavaTypes;


procedure TForm1.Button1Click(Sender: TObject);
var
  Uri: Jnet_Uri;
  Projection: TJavaObjectArray<jstring>;
  Cursor: JCursor;
  FilePath: string;
  Item: TListBoxItem;
begin
  Uri := TJImages_Thumbnails.JavaClass.EXTERNAL_CONTENT_URI;
  Projection := TJavaObjectArray<jstring>.Create(1);
  Projection[0] := TJImages_Thumbnails.JavaClass.DATA;

  Cursor := TAndroidHelper.ContentResolver.query(Uri, Projection, nil, nil, nil);

  if not  Assigned(Cursor) then
    Exit;

  try
    Cursor.moveToFirst;
    while(Cursor.moveToNext) do
    begin
      FilePath := JStringToString(Cursor.getString(Cursor.getColumnIndex(TJImages_Thumbnails.JavaClass.DATA)));

      Item := TListBoxItem.Create(ListBox1);
      Item.Parent := ListBox1;
      Item.Text := FilePath;
      Item.ItemData.Bitmap.LoadFromFile(Filepath);
      // 쓰레드로 처리해야 함(로딩이 오래 걸림)
    end;
  finally
    Cursor.close;
  end;
end;

자세한 설명은 추가하겠습니다.