簡體   English   中英

從 URI 獲取路徑拋出異常

[英]Get path from URI throws exception

我有一個正在開發的 Android 應用程序,現在我正在嘗試從 URI 獲取文件(我將使用意圖從圖庫中獲取圖像,然后使用 Ion 將其上傳到 node.js 服務器) . 問題是它總是拋出異常。 我嘗試調試並得到了 Uri.toString()。 它看起來像這樣:

content://com.android.providers.media.documents/document/image%3A102

我知道它應該是這樣的:

content://com.android.providers.media.documents/document/image:102

我知道 %3A 是 : 的表示,但為什么它會出現在 Uri 中,我該如何修復它? 最后,我怎樣才能從這個 Uri 中獲取我的文件?

我正在嘗試從 URI 中獲取文件

Uri不是文件。 Uri不必指向文件系統上的任何內容,更不用說您可以訪問的地方了。

但為什么它會出現在 Uri 中

Uri是一個不透明的句柄。 它可以是ContentProvider想要的任何東西。

我該如何解決?

你不會,就像你“修復” https://stackoverflow.com/questions/41795342/get-path-from-uri-throws-exception因為你不喜歡以4開頭的八位數字。 正如 Stack Overflow Web 服務器定義它使用的 URL 一樣, ContentProvider定義它使用的Uri值。

最后,我怎樣才能從這個 Uri 中獲取我的文件?

理想情況下,你不會。 您使用ContentResolveropenInputStream()在該Uri標識的內容上獲取InputStream ,Ion 使用它。

如果 Ion 不支持此功能並且只能處理文件,請使用InputStream將字節復制到您控制的某個FileOutputStream (例如,在getCacheDir() )。 使用該文件進行上傳,然后在完成后刪除該文件。

暫無
暫無

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

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