在我的应用中,我编写了一项活动,将本地数据库备份到Google云端硬盘。我让用户使用云端硬盘intentPicker
选择要保存文件的文件夹,并将结果保存在我的OnActivityResult
中:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
switch (requestCode) {
// REQUEST_CODE_PICKER
case 2:
intentPicker = null;
if (resultCode == RESULT_OK) {
//Get the folder's drive id
DriveId mFolderDriveId = data.getParcelableExtra(
OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);
uploadToDrive(mFolderDriveId);
}
上传文件后,我想向用户显示保存文件的位置。所以,我需要将文件夹的DriveId转换为人类可读的路径,例如 / drive / MyBackups / May 。
我已经尝试driveId.toString
,但它只返回一个字符串,其中包含无用的数字和字母DriveId:CASDFAD2Jmasdf==...
。
答案 0 :(得分:2)
使用文件夹的Drive API方法,请注意Drive Rest API中提供的这些重要键 - Work with Folders:
application/vnd.google-apps.folder
但没有扩展名的文件。使用这些给定的键,您可以在查询中添加父ID,并参考您要查找的文件,然后您可以按照此SO帖子中给出的逻辑进行操作 - What's the right way to find files by “full path” in Google Drive API v2。
我希望它对你有用。
答案 1 :(得分:0)
正如之前建议的那样,即使可能,对于具有Drive FILE范围的应用程序,也不会显示文件夹的完整路径。所以我解决了它请求元数据并只显示标题。
private void setBackupFolderTitle(DriveId id){
id.asDriveFolder().getMetadata((mGoogleApiClient)).setResultCallback(
new ResultCallback<DriveResource.MetadataResult>() {
@Override
public void onResult(DriveResource.MetadataResult result) {
if (!result.getStatus().isSuccess()) {
showErrorDialog();
return;
}
Metadata metadata = result.getMetadata();
// Set folder title in TextView
folderTextView.setText(metadata.getTitle());
}
}
);
}