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

如何获取Android 10及以上版本共享存储文件夹的文件路径?

在Android 10及以上版本中,可以通过以下步骤获取共享存储文件夹的文件路径:

  1. 首先,确保你的应用已经申请了READ_EXTERNAL_STORAGE权限,以便能够读取外部存储的文件。
  2. 使用MediaStore类来查询共享存储文件夹中的文件。可以通过以下代码获取文件的Uri:
代码语言:txt
复制
Uri uri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL);
  1. 使用ContentResolver类来查询文件的路径。可以通过以下代码获取文件的路径:
代码语言:txt
复制
String[] projection = {MediaStore.Downloads._ID, MediaStore.Downloads.DISPLAY_NAME};
String selection = MediaStore.Downloads.DISPLAY_NAME + "=?";
String[] selectionArgs = new String[]{fileName};
Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.moveToFirst()) {
    int idColumn = cursor.getColumnIndexOrThrow(MediaStore.Downloads._ID);
    long fileId = cursor.getLong(idColumn);
    Uri fileUri = ContentUris.withAppendedId(uri, fileId);
    String filePath = fileUri.toString();
    cursor.close();
}

在上述代码中,fileName是你要查询的文件名。

  1. 最后,你可以使用获取到的文件路径进行文件操作,例如读取、写入等。

需要注意的是,Android 10及以上版本引入了存储访问框架(Scoped Storage),对应用的文件访问做出了一些限制。因此,如果你的应用需要访问其他应用的文件,或者需要访问外部存储的非共享文件夹,可能需要额外的权限或适配措施。

推荐的腾讯云相关产品:腾讯云对象存储(COS)。

腾讯云对象存储(COS)是一种高可用、高可靠、强安全性的云端存储服务,适用于存储和处理各种类型的非结构化数据,包括文本、图片、音频、视频等。它提供了简单易用的API接口和丰富的功能,可以帮助开发者快速构建可靠的存储解决方案。

产品介绍链接地址:腾讯云对象存储(COS)

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

相关·内容

干货 | 携程Android 10适配踩坑指南

以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储设备的分区访问权限(即分区存储), 对外部存储文件访问方式重新设计,便于用户更好的管理外部存储文件。...要点: Android Q文件存储机制修改成了沙盒模式 APP只能访问自己目录下的文件和公共媒体文件 Android Q版本以下机型,还是使用老的文件存储方式 Android Q及以上版本机型,所有应用均需要分区存储...2.3.3 File Path路径访问受影响接口 开启分区存储新特性, Andrioid 10不能够通过File Path路径直接访问共享目录下资源,以下接口通过File 路径操作文件资源,功能会受到影响...1)获取(创建)私有目录下的文件夹 //在自身目录下创建apk文件夹 File apkFile = context.getExternalFilesDir("apk"); 2)创建私有目录文件 生成需要下载的路径...主要是在公共目录下创建文件或文件夹拿到本地路径uri,不同的Uri,可以保存到不同的公共目录中。

3.3K77

Android | 作用域存储适配

在 10.0 中,作用域存储变得非常重要,这个新的功能颠覆了我们一直惯用外置存储的方式,因此大量的 app 都面临着代码的适配 本篇文章对作用域存储,以及如何进行适配,做了比较详细的介绍 在 7.0...作用域存储 ​ 10.0 中,为了解决上述问题, google 在 Android 10 中加入了作用域功能 ​ 什么是作用域呢?...但是这个文件夹中的文件会随着应用卸载而被随之删除。 ​ 那如果需要访问其他目录怎么办呢,比如获取相册中的图片,向相册中添加一张图片。...,需要注意的是:共享文件夹可以通过 uri 进行访问,如拿到输入/输出流等。...如果添加了可以打开文件的需求,如何处理?

79220
  • 【权限问题专项】存储权限合理使用场景VS不合理使用场景说明

    内部存储路径为:/data/data/packagename(包名),外部存储的私有目录路径为:/storage/emulated/0/Android/data/packagename(包名)。...在 Android 4.4(API 级别19)或更高版本中,应用无需请求任何与存储空间相关的权限即可访问外部存储空间中的应用私有目录。卸载应用后,系统会移除这些目录中存储的文件。...获取外部存储的共享文件夹路径有九种type,分别对应不同的目录,如下: 1.DIRECTORY_MUSIC:音乐类型 2.DIRECTORY_PICTURES:图片类型 3.DIRECTORY_MOVIES...及以上的应用通过拍照方式上传头像不需申请 READ_EXTERNAL_STORAGE 和WRITE_EXTERNAL_STORAGE权限,除非对已拍照的图片进行二次编辑,需要申请WRITE_EXTERNAL_STORAGE...以上就是存储权限的内容,后续还会发布电话、通讯录、无障碍、设备管理器、通知栏、悬浮窗的内容,请持续关注软件绿色联盟。

    1K20

    Android7.0后FileProvider升级安装包导致FileUriExposedException的异常

    --:内部存储空间应用私有目录下的 files/ 目录,等同于 Context.getFilesDir() 所获取的目录路径;--> :内部存储空间应用私有目录下的 cache/ 目录,等同于 Context.getCacheDir() 所获取的目录路径;--> 表示应用程序内部SD卡存储目录下的 cache/ 目录,共享的完整路径为/storage/emulated/0/Android/data/com.bo.view...path 属性用于指定apk所在的文件夹名,与步骤4中设置的对应,不要弄错了。 name 属性告诉 FileProvider 为共享路径创建一个别名为 apk 的路径字段,可任意。...context) { //此处file应为apk下载的完整路径文件,这里下载在了外部存储的私有缓存文件夹下, // 你可以选择其他存储地址如:外置SD卡等,但是要注意与

    2.6K31

    Android 存储空间的最佳实践

    我们制作了一个简单的图片,列出了每种用例以及其在不同系统版本的实践总结: 展示多个文件夹中的图片和视频文件 使用 query() API 查询媒体集合。...在 Android 10 上运行 如果您的应用目标 API 为 Android 10 (API level 29),请停用分区存储并继续使用 Android 9 及更低版本所使用的方法来执行这类操作。...从代码或依赖库中使用直接文件路径访问文件 您需要根据运行应用的 Android 版本来整合逻辑。...在 Android 10 上运行 如果您的应用目标 API 为 Android 10 (API level 29),请停用分区存储并继续使用 Android 9 及更低版本所使用的方法来执行这类操作。...如果您的应用目标平台为 Android 10 停用分区存储,以便您可以更轻松地在多个 Android 版本间保持应用行为不变。

    1.7K10

    相册适配 Android 11 绕的那些弯路

    通过翻查官方文档,大概知道了这个属性的意思:在配置targetSdk >= 29,应用搭载在Android 10及以上版本的手机运行时,可以暂时停用「分区存储」 1.「分区存储」又是什么?...分区存储 为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储空间的分区访问权限(即分区存储)。...为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被授予了对外部存储空间的分区访问权限(即分区存储)。...这是摘自官方文档的一段话,我们可以把「分区存储」简单解释为,Android 10 开启分区存储后,你的应用在有权限的情况下也无法随便访问其他外部存储空间中的公有文件夹了 2....,确实找到了一小段不起眼的文字 使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 通过直接文件路径访问共享存储空间中的媒体文件

    1.7K30

    ArkUI-X跨平台已至,何需其它!

    平台真机和模拟器上运行调试; 平台版本及构建工具要求:OpenHarmony平台:支持API 10+; Android平台:Android 8+,Level-26,version code:...,为SDK选择存储路径。...前置条件: Ubuntu需要18.04以上版本,macOS需要11.6.2及以上版本,Windows需要Windows 10版本。1....编译后的ArkTS代码、资源和平台胶水代码已生成到Android和iOS应用工程中,后续安装、运行和调试请使用Android Studio和Xcode,9.1、ios上运行我们来看一下在ios上如何运行显示隐藏文件快捷键...在Finder打开你想要查看隐藏文件的文件夹,然后使用快捷键Command + Shift + .,即可查看当下文件夹中的隐藏文件。用xcode打开然后我们我们选择app这一级。做如下的配置。

    27610

    AndroidQ兼容性适配指南

    AndroidQ android10.jpeg Android 10 中的隐私权变更 隐私权变更 受影响的应用 缓解策略 ✅ 分区存储 针对外部存储的过滤视图,可提供对特定于应用的文件和媒体集合的访问权限...及一下的设备使用兼容模式,但Android11及以上的设备无论是覆盖安装还是重新安装都无法使用兼容模式; 可以通过调用 Environment.getExternalStorageState() 查询该卷的状态...分区存储的影响 图片位置信息 一些图片会包含位置信息,因为位置对于用户属于敏感信息, Android 10 应用在分区存储模式下图片位置信息默认获取不到,应用通过以下两项设置可以获取图片位置信息: 在...在分区存储模型下,SD卡的公共目录是不让访问的,除了共享媒体的那几个文件夹。...PS:仅限AndroidQ及以上系统版本,低版本国产手机使用ContentResolver进行数据更新存在数据和文件不同步问题以及缩略图和原图不同步问题; 当应用拥有了 WRITE_EXTERNAL_STORAGE

    7.1K30

    Bugly升级SDK适配Android N

    前言 前几天有个用户在我们论坛反馈一个问题,说他们的app在Android N机型中升级失败了,看了一下反馈的问题,基本确定了是因为Android N收敛了访问共享文件权限,即在Android N中使用...intent不允许跨package共享file://URI,如果在工程中设置targetSDK版本为Android N并且有通过Intent传递文件它会抛出FileUriExposedException...如何解决? Android N已经给出明确解决方案,如果你的程序需要在应用间共享文件,您应发送一项 content://URI,并授予 URI 临时访问权限。...我们可以看到在provider中需要配置相应的meta-data,这个是共享文件的路径,在res目录下新建xml文件夹并新建对应的xml文件(如下面的provider_paths),如下所示: ?...总结 关于Android N共享文件权限的适配已经完成,还有其他特性还需要我们去验证看是否存在一些bug,其实Android每一个版本的发布都会面临这样一个问题,所以我们去了解每个版本特性的变化还是很有必要的

    87120

    干货 | Trip.com Android 11 适配之旅

    2.3 分区存储 在 Android 11 之前的版本,Android 的文件存储可以分成以下几类: 1)内置存储里的应用私有目录 2)外置存储里的应用私有目录 3)外置存储里的媒体文件 4)外置存储里的文件...Android 的存储权限问题一直为人诟病,主要问题在于外置存储里的“媒体”相关权限和“文件”相关权限均被归类在 WRITE_EXTERNAL_STORAGE ,同时“文件”的权限过大,导致应用可以在外置存储里建立文件夹...在分区存储开启之后,将受到以下限制: 私有目录访问权限不变 可以直接访问本应用共享的媒体文件 可以申请权限访问其他应用共享的媒体文件 可以在弹窗确认后修改或删除其他应用共享的媒体文件 外置存储的非媒体文件不能直接访问...对于分区存储,其涉及的函数众多,我们通过以下几类来搜索: 直接获取外置存储的根路径,如 getExternalStorageDirectory 直接获取外置存储的媒体路径,如 getExternalStoragePublicDirectory...通过 getExternalStorageDirectory() 获取根目录后,拼接了 "/log.txt" 来建立文件或文件夹。

    1.7K20

    App磁盘沙盒工具实践

    4.3 不同版本访问权限 4.4 访问文件操作 4.5 10和11权限说明 4.6 分享文件给第三方 4.7 打开图片资源 4.8 为何需要FileProvider 4.9 跨进程IPC通信 05.其他设计实践说明...能够查看缓存文件修改的信息,修改的时间,缓存文件的大小,获取文件的路径等等。都是在可视化界面上处理。...分别以共享存储空间和其它目录为例,阐述访问方式: 访问媒体文件(共享存储空间)。目的是拿到媒体文件的路径,有两种方式获取路径: 以图片为例,假设图片存储在/sdcard/Pictures/目录下。...还有就是方便操作文件 Android 10.0访问变更 Google在Android 10.0上重拳出击了。引入Scoped Storage。简单来说有好几个版本:作用域存储、分区存储、沙盒存储。...文件共享方式是如何理解 一个常见的应用场景:应用A里检索到一个文件yc.txt,它无法打开,于是想借助其它应用打开,这个时候它需要把待打开的文件路径告诉其它应用。对应案例就是,把磁盘文件分享到qq。

    1.8K30

    Android 11 开发者常见问题: 存储 | FAQ・第二期

    为了确保不同 Android 版本间的连续性,如果您应用的目标版本是 Android 10 或者是更高版本,您应该选择不启用。...更多详细信息,请参阅文末相关阅读 Android 存储方案的最佳实践上下篇。 与媒体存储 API 相比,文件路径访问的性能表现如何? 性能表现非常依赖具体应用场景。...应用该如何测试分区存储的变化? 通过这些 兼容性标志,应用可以测试与直接文件路径访问或媒体存储 API 相关的分区存储行为。还有另一个 兼容性标志,也可用来测试使用存储访问框架访问某些路径时的限制。...在 Android 10 上,位于分区存储环境中的应用无法通过文件路径访问文件。为了与这一设计保持一致,我们随后废弃了 DATA column。...请参阅文末相关阅读 Android 存储方案的最佳实践上下篇,来获取数据迁移最佳实践的相关信息吧。

    1.1K10

    AndroidR兼容性适配指南

    ,Android 11(API 级别 30)及更高版本允许您使用 MediaStore API 以外的 API 来访问共享存储空间中的媒体文件。...看到这里也许会产生疑惑,在Android10中不是进行分区存储了么,这么Android11又开始能直接使用文件路径进行访问了。...Android 10),申请前台和后台位置权限: android11-requestloction-device11.png Android11及以上的设备,targetSdkVersion...与 Media Store API 相比,文件路径访问的性能如何? 性能实际上取决于确切的用例。对于视频播放等顺序读取,文件路径访问提供与媒体存储相当的性能。...在 Android 10 上,作用域存储环境中的应用无法使用文件路径访问文件。为了与此设计保持一致,我们当时弃用了 DATA 列。

    2.1K20

    《移动互联网技术》 第七章 数据存取: 掌握File、SharePreferences、SQLite和ContentProvider四种数据存取方式

    首先构造一个ContactsActivity,这个活动要访问联系人APP的内容提供器。注意访问共享数据还要声明使用权限,如果使用Android 6.0以上的版本,记得要申请动态使用权限。...” ​ android:enabled=“true” ​ android:exported=“true”> … … 完成以上代码后,其他的应用程序就能够访问应用共享的数据了。...在DDMS中,用File Explorer查看Android系统的存储空间,可以看到第一级的data文件夹,它就是内部存储, 打开data文件夹之后(需要root权限),有一个app文件夹,它存放着所有...如果使用数据库,数据库文件将存储在databases文件夹中,一般的数据则存储在files文件夹中,缓存文件存储在cache文件夹中。 应用程序将文件保存在内部存储中。...此外,如果是Android 4.4以前版本,读取或写入外部存储(包括公共目录和私有目录)的文件,必须获取 READ_EXTERNAL_STORAGE 或 WRITE_EXTERNAL_STORAGE 系统权限

    9010

    给Ionic写一个cordova(PhoneGap)插件

    ,请看上图: src:是放置安卓,ios,wp8等原生代目的地方,一般为了区分各个平台的代码都会先建一个文件夹(以上是android),文件夹下面是代码文件。...,以及插件需要的权限声明(比如相机权限、位置权限、联系人权限等~),打apk及ipa包后此文件会被融合~ README.md:这里是一些使用说明、注意事项等~,一般你将开发的插件共享在github上的时候会需要这个...,如涉及版权及项目安全此文件可忽略~   好了,咱们开始了~,首先按以上造型建文件和文件夹,我能说这是抄么-_-|||     完毕,先写个原生的android代码吧(反正咱不会写oc d=====( ̄...,最后17行共享出来的是一个变量,方便打点调用,仿佛快成了~o( ̄▽ ̄)d,别激动,这个会在最后的使用会详细讲解,现在安卓原生的逻辑已经写好了,api也已经写好,如何将两者结合起来,that is a...,第一行需要明确定义插件的id,这个建议与外部的插件名一致(第一张图中的文件夹的名称),14行中的路径需要参照api文件所在的相对路径填写,20行中定义的别名与api文件中的定义的调用别名一致,21行中的

    1.4K40

    Android 10(Q)11(R) 分区存储适配

    Android 存储分区情况 Android 中存储可以分为两大类:私有存储和共享存储 私有存储 (Private Storage) : 每个应用在都拥有自己的私有目录,其它应用看不到,彼此也无法访问到该目录...Android 10(Q) Android 10 中主要对共享目录进行了权限详细的划分,不再能通过绝对路径访问。 受影响的接口: ?...使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。...无论设备后续是否升级为搭载 Android 10 或更高版本,或者应用后续是否更新为以 Android 10 或更高版本为目标平台,此兼容性行为均适用。...Q:我可以在媒体集文件夹下创建文档,就可以避开权限的问题了? A:官方文档上写了只能创建相应类型的媒体/文件,具体如何限制的,没有说明。

    2.4K30

    给Ionic写一个cordova(PhoneGap)插件

    ,请看上图: src:是放置安卓,ios,wp8等原生代目的地方,一般为了区分各个平台的代码都会先建一个文件夹(以上是android),文件夹下面是代码文件。...,以及插件需要的权限声明(比如相机权限、位置权限、联系人权限等~),打apk及ipa包后此文件会被融合~ README.md:这里是一些使用说明、注意事项等~,一般你将开发的插件共享在github上的时候会需要这个...,如涉及版权及项目安全此文件可忽略~   好了,咱们开始了~,首先按以上造型建文件和文件夹,我能说这是抄么-_-|||     完毕,先写个原生的android代码吧(反正咱不会写oc d=====( ̄...,最后17行共享出来的是一个变量,方便打点调用,仿佛快成了~o( ̄▽ ̄)d,别激动,这个会在最后的使用会详细讲解,现在安卓原生的逻辑已经写好了,api也已经写好,如何将两者结合起来,that is a...,第一行需要明确定义插件的id,这个建议与外部的插件名一致(第一张图中的文件夹的名称),14行中的路径需要参照api文件所在的相对路径填写,20行中定义的别名与api文件中的定义的调用别名一致,21行中的

    1.9K100

    Android 分区存储常见问题解答

    更糟糕的是,我们在网上看到的有关如何适配分区存储的建议,有一些建议十分令人迷惑,甚至会误导我们。...如果您需要针对 Android 10 设备在 AndroidManifest.xml 中设置 android:requestLegacyStorage="true",那在应用的目标版本改为 Android...它仍会在 Android 10 设备上生效。 Q: android:preserveLegacyStorage 是如何工作的?...如果您的应用为了上面提到的方式保存文档而请求 READ_EXTERNAL_STORAGE 权限的话,在 Android 11 及更高版本中将不必再请求该权限。...注意,从 Android 10 开始,提供内容 不再需要请求权限。 也别忘了可以通过 ACTION_SEND 来与 其他应用共享数据 (或允许它们 与您的应用共享数据)!

    1.1K10
    领券