2017-09-12 123 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