簡體   English   中英

將DriveId轉換為人類可讀的路徑

[英]Convert DriveId to human readable path

在我的應用中,我正在編寫一項活動,以將本地數據庫備份到Google雲端硬盤。 我讓用戶選擇使用Drive的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==...

使用文件夾的Drive API方法時,請注意Drive Rest API- 使用文件夾中給出的這些重要鍵:

  • 文件夾是MIME類型為application/vnd.google-apps.folder且沒有擴展名的文件。
  • 您可以使用別名root來指代提供文件ID的任何位置的根文件夾

使用這些給定的鍵,您可以在查詢中添加與要查找的文件有關的父ID,然后可以遵循此SO帖子中給出的邏輯- 通過“完整路徑”查找文件的正確方法是什么Google Drive API v2

希望它對您有用。

正如所說,即使有可能,顯示出不期望一個文件夾的完整路徑與驅動器文件范圍內的應用程序。 因此,我解決了該問題,請求元數據並僅顯示標題。

    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());
                }
            }
        );
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM