簡體   English   中英

適用於Android的Google Drive SDK:如果我知道文件夾標題,如何獲取文件夾ID

[英]Google Drive SDK for Android: How to get folder id if I know folder title

我需要將文件上傳到先前由其他用戶創建的Google雲端硬盤上的文件夾中,我知道該文件夾的名稱,如果我知道文件夾名稱(標題),如何從android應用程序中以編程方式獲取文件夾ID。

Drive Android API當前僅支持按文件訪問,即文件作用域。 用戶需要通過文件選擇器選擇文件夾,以授權您的應用訪問它。

我們希望將來能夠將Drive作用域添加到Android API中,但是目前我無法共享時間表。 如果您可以在我們的問題跟蹤器上共享此功能用例的更多詳細信息,那就太好了。

在此期間,您應該能夠使用Java REST API支持用例。

正如Daniel指出的,您必須在您的情況下使用REST Api。 更具體地說,這是一種可以做到這一點的方法:

static com.google.api.services.drive.Drive mGOOSvc;

/**************************************************************************
 * find file/folder in GOODrive
 * @param prnId   parent ID (optional), null searches full drive, "root" searches Drive root
 * @param titl    file/folder name (optional)
 * @param mime    file/folder mime type (optional)
 * @return        arraylist of found objects
 */
static ArrayList<ContentValues> search(String prnId, String titl, String mime) {
  ArrayList<ContentValues> gfs = new ArrayList<>();
  if (mGOOSvc != null) try {
    // add query conditions, build query
    String qryClause = "'me' in owners and ";
    if (prnId != null) qryClause += "'" + prnId + "' in parents and ";
    if (titl != null) qryClause += "title = '" + titl + "' and ";
    if (mime != null) qryClause += "mimeType = '" + mime + "' and ";
    qryClause = qryClause.substring(0, qryClause.length() - " and ".length());
    Drive.Files.List qry = mGOOSvc.files().list().setQ(qryClause)
      .setFields("items(id,mimeType,labels/trashed,title),nextPageToken");
    String npTok = null;
    if (qry != null) do {
      FileList gLst = qry.execute();
      if (gLst != null) {
        for (File gFl : gLst.getItems()) {
          if (gFl.getLabels().getTrashed()) continue;
          gfs.add( UT.newCVs(gFl.getTitle(),gFl.getId()));
        }
        npTok = gLst.getNextPageToken();
        qry.setPageToken(npTok);
      }
    } while (npTok != null && npTok.length() > 0);
  } catch (Exception e) { /* handle the exceptions*/ }
  return gfs;
}

您所追求的是gFl.getId() 您仍然必須獲取com.google.api.services.drive.Drive mGOOSvc 有關完整內容,請參見此Github演示

祝好運

您的帖子中有兩個問題:

  1. 如何在其他用戶創建的文件夾中上載文件?

答。 首先,您需要對該文件夾具有寫權限,才能在該文件夾中插入一些內容。 如果您知道標題和文件以及目標文件夾,則可以使用CreateFileActivityBuilder類在文件夾中創建文件。 您也可以使用此類指定文件的初始元數據和內容。

這是代碼和詳細的文檔

ResultCallback<DriveContentsResult> contentsCallback = new
        ResultCallback<DriveContentsResult>() {
    @Override
    public void onResult(DriveContentsResult result) {
        if (!result.getStatus().isSuccess()) {
            // Handle error
            return;
        }

        MetadataChangeSet metadataChangeSet = new MetadataChangeSet.Builder()
                .setMimeType("text/html").build();
        IntentSender intentSender = Drive.DriveApi
                .newCreateFileActivityBuilder()
                .setInitialMetadata(metadataChangeSet)
                .setInitialDriveContents(result.getDriveContents())
                .build(getGoogleApiClient());
        try {
            startIntentSenderForResult(intentSender, 1, null, 0, 0, 0);
        } catch (SendIntentException e) {
            // Handle the exception
        }
    }
}
  1. 獲取已知名稱的文件夾的folderID:

答。 您需要至少了解DriveID才能檢索特定文件夾的folderID。 使用文件夾的名稱,您將無法檢索folderID,因為可能有很多名稱相同但ID不同的文件夾。

這是代碼和詳細的文檔

 private static DriveId sFolderId = DriveId.decodeFromString("DriveId:0B2EEtIjPUdX6MERsWlYxN3J6RU0");

暫無
暫無

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

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