簡體   English   中英

如何啟用 Intent 選擇 Google Docs 文件(保存在 Google Drive 上)?

[英]How to enable picking Google Docs files (kept on Google Drive) with Intent?

我想在我的 Android 應用程序中選擇保存在 Google Drive 上的 Google Docs 文件,然后從中讀取一些數據(但這超出了這個問題的范圍)。 所以一開始我只想點擊那個文件並得到一些回調。 我在 Google 雲端硬盤 Android API 棄用和遷移到Google 雲端硬盤 Rest ZDB974238714CA8DE634A 7 上遵循此建議

我設法與 Google Drive 的文件列表對話,但我無法選擇 Google Docs 文件(我可以看到它們,但它們無法點擊它們)。 同時我可以選擇其他類型的文件 - 例如,PDF,PNG,如果我設置它們的 MIME 類型。

現在我使用這段代碼:

val pickerIntent = Intent(Intent.ACTION_OPEN_DOCUMENT)
pickerIntent.addCategory(Intent.CATEGORY_OPENABLE)
pickerIntent.type = "*/*"
val mimeTypes = arrayOf(
     "application/pdf", // works
     "image/png", //works
     // none of MIME below works
     "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
     "application/vnd.google-apps.document",
     "application/vnd.google-apps.file"
)
pickerIntent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)

官方示例中,他們使用 MIME "text/plain" 作為示例,因此對我沒有幫助。

我嘗試了幾種我能找到的 MIME 類型(例如 這里這里),但它們都沒有解決問題。

應該為此使用什么 MIME 類型? 或者問題可能不在 MIME 類型中?

我在這篇官方文檔的文章中發現了問題的根源。

問題是 Google Doc 文件 - 與“真實”PDF|PNG 文件不同,它們是所謂的“虛擬”文件,因為它們沒有二進制表示。

我的問題的明確答案是文檔中的下一個注釋:

注意:由於應用程序無法通過 openInputStream() 方法直接打開虛擬文件,因此在創建包含 ACTION_OPEN_DOCUMENT 或 ACTION_OPEN_DOCUMENT_TREE 操作的 Intent 時,請勿使用 CATEGORY_OPENABLE 類別

所以在我刪除下一行后問題就解決了:

pickerIntent.addCategory(Intent.CATEGORY_OPENABLE)

此外,我可以承認,Google Doc 的選擇器過濾器適用於下一個 MIME:

"application/vnd.google-apps.document"

暫無
暫無

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

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