[英]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 中獲取我的文件?
理想情況下,你不會。 您使用ContentResolver
和openInputStream()
在該Uri
標識的內容上獲取InputStream
,Ion 使用它。
如果 Ion 不支持此功能並且只能處理文件,請使用InputStream
將字節復制到您控制的某個FileOutputStream
(例如,在getCacheDir()
)。 使用該文件進行上傳,然后在完成后刪除該文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.