[英]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演示
祝好運
您的帖子中有兩個問題:
答。 首先,您需要對該文件夾具有寫權限,才能在該文件夾中插入一些內容。 如果您知道標題和文件以及目標文件夾,則可以使用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
}
}
}
答。 您需要至少了解DriveID才能檢索特定文件夾的folderID。 使用文件夾的名稱,您將無法檢索folderID,因為可能有很多名稱相同但ID不同的文件夾。
這是代碼和詳細的文檔 :
private static DriveId sFolderId = DriveId.decodeFromString("DriveId:0B2EEtIjPUdX6MERsWlYxN3J6RU0");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.