在Android 10中,从Uri获取绝对路径的方式发生了变化。在此之前,可以通过使用ContentResolver的query()方法和MediaStore的常量来获取绝对路径。但是,从Android 10开始,由于隐私和安全方面的考虑,应用程序无法直接访问其他应用程序的私有文件。
为了解决这个问题,Android引入了一种新的访问Uri的方式,即使用ContentResolver的openFileDescriptor()方法。下面是获取绝对路径的步骤:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
ContentResolver resolver = getContentResolver();
ParcelFileDescriptor fileDescriptor = resolver.openFileDescriptor(uri, "r");
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
没有搜到相关的结果
领取专属 10元无门槛券
手把手带您无忧上云