6

코드 작동을 위해 고심하고 있습니다.Android Google 드라이브 SDK - 선택한 폴더에있는 파일 목록을 표시하는 방법

버튼을 클릭하면 드라이브의 루트 폴더에있는 모든 폴더 및 파일을 표시하기를 원합니다. 하지만 Ouath2를 사용하여 앱을 승인했지만 앱이 사용자가 선택한 파일 및 폴더에만 액세스 할 수 있기 때문에 불가능합니다.

폴더 선택 도구가 열리면 내용이 폴더 인 경우 해당 폴더의 내용 만 나열된다는 동작이 이상합니다. 파일을 전혀 나열하지 않습니다.

전문가가 내 코드를보고 내가 잘못 가고있는 위치를 알려주시겠습니까?

driveId를 얻으려면 PickFolderWithOpener 활동을 사용하고 있습니다. 선택기의 사용자 선택에 따라 드라이브 ID를 반환합니다.

DriveId driveId = (DriveId) data.getParcelableExtra(
          OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 

여기서 반환되는 내용은 드라이브 ID입니다. 그런 다음 의도를 호출해야합니다 ListFilesInFolderActivity. 나는 의도 호출에이 driveID를 전달해야한다고 가정합니까? 드라이브 ID를 문자열로 포맷하고 전달하면 에 "드라이브 ID를 찾을 수 없습니다.이 파일을 볼 수있는 권한이 있습니까?"와 함께 실패합니다. 메시지.

그래서 나는 ResourceID를 전달하고 있습니다.

Intent intent = new Intent(this, ListFilesInFolderActivity.class); 
        intent.putExtra("DriveID", driveId.getResourceId()); 
        startActivity(intent); 

ListFilesInFolderActivity? DriveID 또는에서 resourceID에서 사용 할 필요가 무엇입니까? 여기에 내가 일을 보인다 ListFilesInFolderActivity?

Bundle extras = getIntent().getExtras(); 
     folderId= extras.getString("DriveID"); // this is the resourceID 
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), folderId) 
       .setResultCallback(idCallback); 


final private ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() { 
@Override 
public void onResult(DriveIdResult result) { 
    if (!result.getStatus().isSuccess()) { 
     showMessage("Cannot find DriveId. Are you authorized to view this file?"); 
     return; 
    } 
    DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), result.getDriveId()); 
    showMessage("Result driveId is: " + result.getDriveId()); 
    folder.listChildren(getGoogleApiClient()) 
      .setResultCallback(metadataResult); 



} 
}; 

이 무엇인지,하지만 그것은 단지 선택한 폴더의 폴더를 나열합니다. 파일을 나열하지 않습니다. folder.listChildren(getGoogleApiClient())에 파일이 표시되지 않는 이유는 무엇입니까?

바라건대 이것은 분명한 사실입니다.

+0

앱의 드라이브 범위 란 무엇입니까? – Sunny

+0

mGoogleApiClient = 새로운 GoogleApiClient.Builder (이) .addApi (Drive.API) .addScope (Drive.SCOPE_FILE) .addConnectionCallbacks (이) .addOnConnectionFailedListener (이) .build(); – user3437721

+1

이것이 이유입니까? "참고 : Google 드라이브 Android API는 현재 drive.file 및 drive.appdata 승인 범위 만 지원합니다. 아직 드라이브 Android API에서 사용할 수없는 추가 권한이나 기능이 필요한 애플리케이션의 경우 Google API Java 클라이언트를 사용해야합니다." – user3437721

답변

9

새 SDK에서는 SCOPE_FILE 액세스 만 허용하므로이 작업을 수행 할 수 없습니다.

이 이유가 무엇입니까 ?? "참고 : Google 드라이브 Android API는 현재 drive.file 및 drive.appdata 승인 범위 만 지원합니다. 아직 드라이브 Android API에서 사용할 수없는 추가 권한이나 기능이 필요한 애플리케이션의 경우 Google API Java 클라이언트를 사용해야합니다."

+0

감사합니다. : Google 드라이브 Android API는 현재 drive.file 및 drive.appdata 승인 범위 만 지원합니다. 앱에 Drive Android API에서 아직 제공되지 않은 추가 권한이나 기능이 필요한 경우 Google API Java 클라이언트를 사용해야합니다. " ! 그것은 정말로 중요한 포인트입니다! –

관련 문제