首页
学习
活动
专区
工具
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

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

相关·内容

没有搜到相关的沙龙

领券