Google 드라이브 Android API (GDAA)로 작업 할 때 종종 DriveId로 식별되는 GDAA 개체의 부모 목록을 검색해야합니다. 그러나 나는 부모 목록을 제공 할 수있는 직접적인 방법을 찾지 못했습니다. 이를 얻는 유일한 방법은 DriveId를 DriveFile 또는 DriveFolder로 변환 한 다음 listParents (GoogleApiClient) 메소드를 적용하는 것입니다.DriveId에서 파일 대 폴더를 식별하는 방법
그리고 여기, 나는 점점 부모를위한 코드가 추한 켤 수있는 상황으로 실행, 같은 (이 단순화 은, 원래는뿐만 아니라/캐치 논리 시도가) :
static private GoogleApiClient mGAC;
...
ArrayList<DriveId> getParents(DriveId dId) {
ArrayList<DriveId> prnts = new ArrayList<>();
if (dId != null) {
DriveFile dFile = Drive.DriveApi.getFile(mGAC, dId);
if (dFile != null) {
MetadataBufferResult rslt = dFile.listParents(mGAC).await();
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
for (Metadata md : mdb) {
if (md == null || !md.isDataValid() || md.isTrashed()) continue;
prnts.add(md.getDriveId();
}
} finally { if (mdb != null) mdb.close(); }
}
} else {
DriveFolder dFldr = Drive.DriveApi.getFolder(mGAC, dId);
if (dFldr != null) {
MetadataBufferResult rslt = dFldr.listParents(mGAC).await();
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
for (Metadata md : mdb) {
if (md == null || !md.isDataValid() || md.isTrashed()) continue;
prnts.add(md.getDriveId();
}
} finally { if (mdb != null) mdb.close(); }
}
}
}
}
return prnts;
}
이력서 :
- DriveId가 DriveFile로 성공적으로 바뀌는 지 확인하고 그렇지 않은 경우 DriveFolder로 다시 테스트하면 실제로 불안정합니다.
- DriveId에서 상위 ID를 직접 가져올 수없는 이유를 모르겠습니다. DriveId가 파일이나 폴더를 나타내는 경우 어떤 차이가있을 수 있습니다.
는 그래서이 질문에 종기 :
- 나 파일 또는 폴더로 DriveId을 식별 할 수 있습니다 몇 가지 방법/표시가 있습니까?
- getFile()/getFolder()를 통해 가지 않고도 부모 목록을 얻을 수있는 방법에 대해 모르겠습니까?
"사용자의 부모 DriveId가 'DriveId : AbC ...'"인 개체를 찾으십시오. 나는 "DriveId : XyZ ..."라는 객체의 모든 부모를 찾는 방법을 묻습니다. Google 드라이브 개체 (파일/폴더)에는 여러 개의 부모가있을 수 있습니다. – seanpj
DriveAPI 설명서에 따르면 요청한 결과가 표시됩니다. 드라이브 웹 API에서 이러한 메소드가 존재합니다. https://developers.google.com/drive/v2/reference/parents/list – Rivero
Android API의 Query 메소드를 사용하면 비슷한 응답을 얻을 수 있습니다. – Rivero