我的Google雲端硬盤帳戶上有文件夾,我想在特定文件夾中添加文件。我該怎麼做?在example需要DriveId(EXISTING_FOLDER_ID),但我不知道DriveID我的文件夾,我只知道名字。如何獲取Google Drive Android API中已創建文件夾的DriveId
回答
如果您有文件夾(或DriveFolder對象,您可以從中獲取元數據)的元數據,則可以致電getDriveId。
如果你是網絡資源,您可以使用使用fetchDriveId
@smokybob該資源ID獲得驅動器Id。我不知道它是否有助於原來的問題,但根據您的意見:
這是一個代碼片段,應該讓你的文件夾/文件DriveId。 'title','mime'和'fldr'參數是可選的。如果你通過null'fldr',搜索是全局的(在應用程序的FILE範圍內),否則在指定的文件夾內(不在子文件夾中)。它使用最簡單的 - 'await()'風格,它必須從UI線程運行。
請注意,文件夾/文件名稱不是Google雲端硬盤Universe中的唯一實體。 您可以在一個文件夾中擁有多個具有相同名稱的文件/文件夾!
GoogleApiClent _gac; // initialized elsewhere
//find files, folders. ANY 'null' ARGUMENT VALUE MEANS 'any'
public void findAll(String title, String mime, DriveFolder fldr) {
ArrayList<Filter> fltrs = new ArrayList<Filter>();
fltrs.add(Filters.eq(SearchableField.TRASHED, false));
if (title != null) fltrs.add(Filters.eq(SearchableField.TITLE, title));
if (mime != null) fltrs.add(Filters.eq(SearchableField.MIME_TYPE, mime));
Query qry = new Query.Builder().addFilter(Filters.and(fltrs)).build();
MetadataBufferResult rslt = (fldr == null) ?
Drive.DriveApi.query(_gac, qry).await() :
fldr.queryChildren(_gac, qry).await();
if (rslt.getStatus().isSuccess()) {
MetadataBuffer mdb = null;
try {
mdb = rslt.getMetadataBuffer();
if (mdb != null) {
for (Metadata md : mdb) {
if (md == null) continue;
DriveId dId = md.getDriveId(); // here is the "Drive ID"
String title = md.getTitle();
String mime = md.getMimeType();
// ...
}
}
} finally { if (mdb != null) mdb.close(); }
}
}
總體而言,你可以得到「驅動器Id」你需要:
- 文件/文件夾名稱,如圖上面的代碼,或
- ,您對字符串標識符來自'encodeToString()'。例如,我使用它來緩存MYROOT文件夾ID,或者從'getResourceId()'獲取的字符串標識符爲
- 。這是你在html地址中看到的字符串。但是由於你的唯一範圍是FILE,所以不要指望用它來打開你的應用程序沒有創建的東西。
2和3標識符都是字符串,所以它們可能會混淆。標識符2在檢索驅動器ID時(通過decodeFromString())速度更快。標識符3檢索速度較慢(通過fetchDriveId()),但如果您需要將其他標識符(例如Apps Script)用於其他標識符,則該標識符有用。另請參閱SO 21800257
就創建文件/文件夾而言,我在GitHub here上有一些代碼。如果您看到等待\ MainActivity.java ... buildTree(),您將在構建簡單文件夾樹時遞歸地看到創建文件夾/文件。 OK。
GitHub頁面未找到· –
我已經退休。這裏仍然有一個[GDAADemo](https://github.com/seanpjanson/GDAADemo),但我有一段時間沒有觸及它,GDAA可能已經發展了。 – seanpj
OK。我經歷了Github上的驅動器演示了同樣的問題:https://github.com/googledrive/android-demos
在自述的底部,它說:
如果你真的想運行此示例應用程序(雖然它主要是 設置您可以閱讀代碼),則需要使用您自己的調試密鑰爲com.google.android.gms.drive.sample.demo軟件包註冊OAuth 2.0客戶端,並將任何資源ID設置爲您有權訪問的那些ID至。資源ID定義位於:
com.google.android.gms.drive.sample.demo.BaseDemoActivity。EXISTING_FOLDER_ID com.google.android.gms.drive.sample.demo.BaseDemoActivity.EXISTING_FILE_ID
他們並沒有真正指定一個應該如何準確獲取和設置RESOURCEID在BaseDemoActivity定義的EXISTING_FOLDER_ID和EXISTING_FILE_ID常數文件,在閱讀上面的seanpj註釋之後,我使用他的方法3找到DriveID,以便我可以將它添加到演示應用程序中,以便它正常運行。
所有人需要做的就是去你的電腦上的驅動器,然後點擊頂部的「鏈接」按鈕。
鏈路的一部分說 「ID = XXXXXXXXXXX」。將其複製並粘貼到演示應用程序的BaseDemoActivity文件中。對您在Drive上創建的文件和文件夾執行此操作。
Demo應用現在應該可以成功運行。
我在重複我自己,但是我想知道有問題的文件必須由DEMO應用程序本身創建。 GDAA僅支持FILE範圍,即只能使用由其創建的文件/文件夾。在一個鬆散的相關問題中,我在Github上放了一段測試代碼,這除了官方的DEMO(它更簡單)之外可能是有用的。歡迎您進行介紹。 https://github.com/seanpjanson/GDAADemo – seanpj
您可以使用查詢來查找文件夾
Query query = new Query.Builder().addFilter(Filters.and(
Filters.eq(SearchableField.TITLE, "folder name"),
Filters.eq(SearchableField.TRASHED, false))).build();
我發現那位一個示例教程 http://wiki.workassis.com/android-google-drive-api-deleted-folder-still-exists-in-query/ 在本教程中,他們呼籲異步
- 1. Google Drive API - 創建重複文件夾
- 2. Google Drive API - 獲取文件夾列表
- 3. 如何獲取Google Drive API的文件夾和文件列表?
- 4. 如何使用Python中的Google Drive API創建新文件夾?
- 5. 在Google Drive中創建文件夾內的文件夾android
- 6. 如何使用.NET API在Google Drive中創建文件夾?
- 7. 如何在Google Drive中獲取My Drive的子文件夾
- 8. 如何使用Google Drive API獲取文件夾的子女數?
- 9. 如何從Google Drive Rest Api獲取公共文件夾?
- 10. Google Drive API - 獲取包含文件夾的文件列表
- 11. 在Google Drive .NET上創建文件夾
- 12. 使用JavaScript API在Google Drive中創建文件夾
- 13. Google Drive API v3獲取java文件夾中的根文件夾標識
- 14. Google Drive API - Android - 如何獲取驅動器文件ID?
- 15. 如何通過Google腳本在Drive中的文件夾內創建文件夾?
- 16. 如何根據Google Drive API上的文件夾獲取文件列表
- 17. Google Drive API上傳/創建文件(.NET)
- 18. Google Drive Android API - DriveId無效並且爲空ResourceId
- 19. 如何獲取Google Drive文件ID
- 20. Google Drive API - 獲取公共文件
- 21. 使用Google Drive API - 如何顯示根文件夾中的文件夾列表
- 22. 如何獲取Google Drive文件的'fileId'?
- 23. 如何在Android Studio上連接Google Drive以創建文件夾或文件?
- 24. Google Drive API - 獲取文件夾中的文件的唯一列表
- 25. 從Google Drive中的ID文件夾獲取兒童文件
- 26. 獲取文件夾和子文件夾ID Google Drive
- 27. 如何獲取Google Drive上已更改文件的ID
- 28. 如何使用javascript在Google Drive上創建文件夾
- 29. 如何使用Google Drive REST AP和HTTPClient創建文件夾?
- 30. Google Drive API文件夾/兒童ID
我覺得歸結問題是:我如何獲得驅動器Id當我只知道文件夾名稱(又名標題),並將文件添加到文件夾? – smokybob
在這種情況下,您可以使用查詢API搜索具有該標題的文件夾:https://developer.android.com/reference/com/google/android/gms/drive/DriveApi.html#query(com.google。 android.gms.common.api.GoogleApiClient,com.google.android.gms.drive.query.Query) –
所以我可以得到不是通過我的應用程序創建的文件夾,但例如通過web界面[Google Drive](https: //drive.google.com) – Werder