마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

구글 드라이브 v3에서 특정 폴더의 목록을 가져오는 소스

0 추천

 

안녕하세요 개발자님 ~ 

 

의뢰내용 : 구글 드라이브 v3에서 특정 폴더에 있는 파일들의 목록을 가져오는 소스 

루트가 아닌 루트 아래에 있는 폴더의 아이디 가져와서   

폴더아이디를 가지고 루트가 아닌 루트 아래에 있는 파일들의 목록가져오는 소스 가 필요해요 

전문가님께 답글 달아주시기를 부탁드립니다 

 

수고하세요~ 

 

----------------------------------------------------------------------------------------- 

 

에러 및 제가 만든 소스 

( 제가 폴더아이디를 가져오고 그것으로 목록가져오라고 하는데, 동작을 안하네요 ) 

 

public Task<FileList> queryFiles(String subFolderName) {

 

  return Tasks.call(mExecutor, () -> {

 

    // subFolderName의 폴더 아이디를 가지고 간다

    String sFolderId = "";

    FileList folderList = mDriveService.files().list()

    .setSpaces("drive")

    .setQ("trashed != true")

    .execute();

    for (File fList : folderList.getFiles()) {

// 폴더명이 존재재하고 폴더이면 폴더 아이디를 가지고 간다

if( fList.getName().equals(subFolderName) &&

fList.getMimeType().equals("application/vnd.google-apps.folder") ){

    try {

sFolderId = fList.getId();

    }catch(Exception eSelected){ ; }

} // end if

    } // end for

 

 

 

루트에서 폴더 아이디를 가져온 후 
이 폴더 아이디를 가지고 파일의 목록을 가져오는 부분 ( 아래부분 ) 
여기에서 결과가 없다고 나옵니다, 제가 샘플로 파일들을 넣어 놓아서 파일의 목록을 가져와야 하는데, 안 가져오고 있어요, 어떤게 문제일지 고수님의 답변 부탁드립니다 

조언 부탁드려요~ 

if(!sFolderId.equals("")) {

    FileList fSelectedList = mDriveService.files().list()

    .setQ("'"+sFolderId+"' in parents ")

    .setSpaces("drive")

    .execute();

    return fSelectedList;

}else {

    return null;

}

 

 

  });

 

앱천사 (380 포인트) 님이 2020년 10월 19일 질문
앱천사님이 2020년 10월 20일 수정
"동작을 안한다"는 건 너무 광범위합니다. 정확하게 어떤 부분은 되고 어떤 부분에서 막힌다라고 질문을 하셔야 이해가 쉬울 것 같아요.
루트에서 폴더 아이디를 가져온 후
이 폴더 아이디를 가지고 파일의 목록을 가져오는 부분 ( 아래부분 )
여기에서 결과가 없다고 나옵니다, 제가 샘플로 파일들을 넣어 놓아서 파일의 목록을 가져와야 하는데, 안 가져오고 있어요, 어떤게 문제일지 고수님의 답변 부탁드립니다
도와주세요~
수고하세요~
 if(!sFolderId.equals("")) {
    FileList fSelectedList = mDriveService.files().list()
    .setQ("'"+sFolderId+"' in parents ")
    .setSpaces("drive")
    .execute();
    return fSelectedList;
}else {
    return null;
}
FileList fSelectedList = mDriveService.files().list()
부분에 어떤 값이 들어오는지 먼저 디버깅해보세요. 만약 아무 것도 안들어온다면 그건 mDeriverService에서 파일을 가져오는 부분이 잘못된 것이고,
그렇지 않다면 setQ()에서 쿼리를 잘못 설정하고 있는 거겠네요.
안녕하세요 고수님~
친절한 답변 감사드립니다

전문가님의 말씀처럼 특정폴더의 목록가져올때의
setQ부분이 잘못된것 같아요
.setQ("'"+sFolderId+"' in parents ")
.setSpaces("drive")

이 부분이 잘못된것 같은데,
부모 밑의 하위 폴더에서 그 폴더에 있는 파일을 가져오기 위해서
어떻게 설정해야 되나요?
제가 수십차례 다양한 방법으로 해보았는데, 결과가 안나와요
고수님 도와주세요
수고하세요~

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...