我在这里讲的是USB而不是存储卡或内部存储器,需要一个确切的路径而不是Uri。
直到Android L我从/ mnt或/ storage或任何其他目录中获取文件路径。但在marshmallow中,我并没有找到我的usb确切位置。
然后我向存储访问框架前进。但是它没有返回它给Uri返回的实际路径。
我还要浏览AFileChooser项目和一个stackoverflow帖子 Android Gallery on KitKat returns different Uri for Intent.ACTION_GET_CONTENT
但它没有帮助。所以我可以像(/storage/abc/filename.mp4)一样访问Realpath。
答案 0 :(得分:1)
然后我向存储访问框架前进。但是它没有返回它给Uri返回的实际路径。
这是因为存储访问框架无法处理文件。它适用于存储提供商。欢迎存储提供商存储他们的开发人员想要的内容。这可以包括存储在服务器上的内容,存储在数据库中的内容,存储在加密容器中的内容,即时生成的内容等。其中没有一个人拥有"实际路径"这对你有意义。而且,如果您使用的是存储访问框架,则用户可以选择用户想要的任何存储提供程序。
所以我可以像(/storage/abc/filename.mp4)一样访问Realpath。
使用Uri
和Java I / O制作您自己的内容副本。那么你就知道" Realpath"你的副本。
Uri
就像一个网址。不要求此网页的URL映射到计算机上的某个文件。没有神奇的算法可以将URL转换为本地文件路径......除了自己下载内容并创建本地文件。