코드 작동을 위해 고심하고 있습니다.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())
에 파일이 표시되지 않는 이유는 무엇입니까?
바라건대 이것은 분명한 사실입니다.
앱의 드라이브 범위 란 무엇입니까? – Sunny
mGoogleApiClient = 새로운 GoogleApiClient.Builder (이) .addApi (Drive.API) .addScope (Drive.SCOPE_FILE) .addConnectionCallbacks (이) .addOnConnectionFailedListener (이) .build(); – user3437721
이것이 이유입니까? "참고 : Google 드라이브 Android API는 현재 drive.file 및 drive.appdata 승인 범위 만 지원합니다. 아직 드라이브 Android API에서 사용할 수없는 추가 권한이나 기능이 필요한 애플리케이션의 경우 Google API Java 클라이언트를 사용해야합니다." – user3437721