2017-09-12 122 views
-1

我無法使用給定的URI獲取文件的路徑。使用Uri獲取文件的路徑

我有一個視頻應用程序根據從EditText中讀取的路徑播放視頻。

我創建了一個瀏覽按鈕,允許我使用ACTION_GET_CONTENT打開內置文件瀏覽器。

我希望無論我在文件資源管理器中單擊的視頻路徑自動設置爲我的EditText。

林失去了在我打電話給我的onActivityResult

public Boolean onActivityResult(int requestcode, int resultCode, Intent data){ 
    if(requestCode == RECEIVE_DATA){ 
    Uri uriEnd = data.getData(); 
    //here I am unsure of how to get the Path with the given Uri 
    //I am using SDK Build 24 Nougat 
    } 
    } 

如果我叫uriEnd.getPath()的一部分;我得到一個奇怪的路徑

我知道這個問題已被多次詢問,我已經看了看答案,但即使提供的建議路徑是永遠不會正確的。

+0

我可以向你推薦這個圖書館嗎? https://github.com/Angads25/android-filepicker我已經使用它,它解決了我的文件問題 – cutiko

回答

1

我無法獲得具有給定URI的文件路徑。

A Uri不是文件。

我創建了一個瀏覽按鈕,允許我使用ACTION_GET_CONTENT打開內置文件瀏覽器。

ACTION_GET_CONTENT不一定涉及任何種類的「文件資源管理器」。

如果我調用uriEnd.getPath();我得到一個奇怪的路徑

getPath()Uri纔有意義,如果Uri的方案是file。您的Uri的計劃最有可能是content。這條道路對你和用戶來說毫無意義。將其展示給用戶幾乎沒有價值,並且將其放入要編輯的EditText的價值甚至更低(因爲編輯的結果不可能指向任何東西)。

所以,我建議你想出另一個用戶界面,一個不涉及UriACTION_GET_CONTENT給用戶。

+0

所以基本上即時通訊試圖獲得一個瀏覽按鈕,打開內置的文件瀏覽器。我能夠做所有事情,除了我無法將我的頭圍繞如何獲得用戶選擇的文件路徑。如果這樣做的方式不正確,請讓我知道什麼是正確的方式。這似乎是最直接的方法。 –

+0

@AjjandroSoto:「即時通訊試圖獲得一個瀏覽按鈕,打開內置文件瀏覽器」 - 沒有「內置文件瀏覽器」。最接近的是存儲訪問框架用戶界面,它探索的不是本地文件(Google Drive,網絡文件服務器等)。 「我能夠做所有事情,除了我無法將我的頭圍繞如何獲得用戶選擇的文件的路徑」 - 這是因爲用戶沒有選擇文件。 – CommonsWare

+0

@AjjandroSoto:如果你想限制用戶在文件系統上的本地文件,[使用庫](https://android-arsenal.com/tag/35?sort=created)嵌入你自己的「文件瀏覽器」風格的用戶界面進入你的應用。 – CommonsWare