首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Android 10中从Uri获取绝对路径

在Android 10中,从Uri获取绝对路径的方式发生了变化。在此之前,可以通过使用ContentResolver的query()方法和MediaStore的常量来获取绝对路径。但是,从Android 10开始,由于隐私和安全方面的考虑,应用程序无法直接访问其他应用程序的私有文件。

为了解决这个问题,Android引入了一种新的访问Uri的方式,即使用ContentResolver的openFileDescriptor()方法。下面是获取绝对路径的步骤:

  1. 首先,检查应用程序是否具有读取外部存储权限。可以在AndroidManifest.xml文件中添加以下权限:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 然后,使用ContentResolver的openFileDescriptor()方法打开Uri,并获取FileDescriptor对象。可以使用以下代码实现:
代码语言:txt
复制
ContentResolver resolver = getContentResolver();
ParcelFileDescriptor fileDescriptor = resolver.openFileDescriptor(uri, "r");
  1. 接下来,使用FileDescriptor对象创建FileInputStream,并获取文件的绝对路径。可以使用以下代码实现:
代码语言:txt
复制
FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
File file = new File(inputStream.getFD());
String absolutePath = file.getAbsolutePath();

现在,你可以使用获取到的绝对路径进行后续的操作,例如文件的读取、上传等。

需要注意的是,上述方法仅适用于Android 10及更高版本。对于较旧的Android版本,仍然可以使用之前的方法来获取绝对路径。

推荐的腾讯云相关产品:腾讯云对象存储(COS) 腾讯云对象存储(COS)是一种安全、低成本、高可靠的云存储服务,适用于存储和处理大规模非结构化数据。它提供了简单易用的API接口,可以轻松地将数据存储到云端,并通过网络访问。腾讯云对象存储(COS)具有高可用性、高可靠性和高扩展性,适用于各种场景,如网站托管、备份与恢复、大数据分析、移动应用程序等。

产品介绍链接地址:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

6分11秒

64从环信服务器获取所有群成员.avi

12分14秒

36从环信服务器获取联系人信息.avi

13分42秒

44从环信服务器获取群组联系人信息及条目的点击事件.avi

8分51秒

day04_Java基本语法/05-尚硅谷-Java语言基础-使用Scannner从键盘获取int型数据

17分26秒

day04_Java基本语法/06-尚硅谷-Java语言基础-使用Scannner从键盘获取多种类型数据

16分8秒

人工智能新途-用路由器集群模仿神经元集群

领券