Tôi đang cố gắng để mã của tôi hoạt động.Android Google Drive SDK - cách hiển thị danh sách tệp trong thư mục đã chọn
Tôi muốn ứng dụng của mình (khi một nút được nhấp) để hiển thị tất cả các thư mục (và tệp) trong thư mục gốc của ổ đĩa. Nhưng có vẻ như điều này là không thể vì mặc dù tôi đã cho phép ứng dụng sử dụng Ouath2, ứng dụng chỉ có quyền truy cập vào các tệp và thư mục mà người dùng chọn.
Hành vi lạ ở chỗ khi bộ chọn thư mục mở ra, nó chỉ liệt kê nội dung của thư mục đó nếu nội dung là thư mục. Nó sẽ không liệt kê bất kỳ tập tin nào cả.
Chuyên gia có thể xem mã của tôi và cho tôi biết tôi đang đi sai ở đâu không?
Tôi đang sử dụng hoạt động PickFolderWithOpener
, để lấy driveId. Nó trả về một driveID dựa trên lựa chọn người dùng từ bộ chọn.
DriveId driveId = (DriveId) data.getParcelableExtra(
OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
Đó có phải là những gì được trả về ở đây, thư mục Drive ID? Sau đó tôi cần gọi ý định ListFilesInFolderActivity
. Tôi giả sử tôi phải vượt qua driveID này trong cuộc gọi ý định? Nếu tôi định dạng DriveID dưới dạng chuỗi và vượt qua nó, nó không thành công với "Không thể tìm thấy DriveId. Bạn có được phép xem tệp này không?" thông điệp.
Vì vậy, những gì tôi đang làm là chuyển ResourceID.
Intent intent = new Intent(this, ListFilesInFolderActivity.class);
intent.putExtra("DriveID", driveId.getResourceId());
startActivity(intent);
Điều gì cần được sử dụng trong ListFilesInFolderActivity?
DriveID hoặc resourceID? Đây là những gì tôi có trong 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);
}
};
Mà dường như để làm việc, nhưng nó chỉ liệt kê các thư mục trong thư mục đã chọn. Nó không liệt kê các tập tin. Tại sao folder.listChildren(getGoogleApiClient())
cũng không liệt kê các tệp?
Hy vọng đây là điều hiển nhiên tôi đang thiếu.
Phạm vi Drive trong ứng dụng của bạn là gì? – Sunny
mGoogleApiClient = new GoogleApiClient.Builder (this) .addApi (Drive.API) .addScope (Drive.SCOPE_FILE) .addConnectionCallbacks (this) .addOnConnectionFailedListener (this) .build(); – user3437721
Đây có phải là lý do ?? "Lưu ý: API Android của Google Drive hiện chỉ hỗ trợ phạm vi cấp phép drive.file và drive.appdata. Nếu ứng dụng của bạn yêu cầu quyền hoặc tính năng bổ sung chưa có trong API Android của Drive, bạn phải sử dụng Java API của Google API." – user3437721