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

getExternalStorageDirectory在安卓10中已弃用

getExternalStorageDirectory是一个在安卓系统中用于获取外部存储目录的方法。然而,在安卓10中,该方法已被弃用。

在安卓10及更高版本中,Google引入了Scoped Storage的概念,以增强应用程序对外部存储的访问控制。Scoped Storage限制了应用程序对外部存储的直接访问权限,使得应用程序只能访问其私有目录和特定的共享目录。

相比于getExternalStorageDirectory方法,Scoped Storage提供了更好的安全性和隐私保护。它确保了应用程序只能访问其自己的文件,而无法访问其他应用程序的文件。这样可以防止恶意应用程序获取用户的敏感信息。

在使用安卓10及更高版本的设备上开发应用程序时,开发者应该使用新的API来替代getExternalStorageDirectory方法。可以使用以下方法之一来获取应用程序的私有目录:

  1. getExternalFilesDir():用于获取应用程序的私有文件目录,该目录位于外部存储上。可以通过传递特定的类型参数来获取不同类型的文件目录,例如getExternalFilesDir(Environment.DIRECTORY_PICTURES)用于获取图片文件目录。
  2. getExternalCacheDir():用于获取应用程序的私有缓存目录,该目录位于外部存储上。

这些方法返回的路径是应用程序专用的,其他应用程序无法直接访问。同时,这些方法也会自动处理存储空间的管理,当应用程序被卸载时,相关的文件和目录也会被删除。

对于需要与其他应用程序共享文件的情况,可以使用MediaStore API或者使用SAF(Storage Access Framework)来进行文件的读取和写入操作。

腾讯云相关产品中,可以使用对象存储(COS)来存储和管理应用程序的文件。对象存储提供了高可靠性、高可扩展性的存储服务,适用于各种应用场景。您可以通过腾讯云对象存储官方文档了解更多信息:腾讯云对象存储

请注意,以上答案仅针对getExternalStorageDirectory方法在安卓10中的弃用情况,具体的实际应用场景和解决方案可能因具体需求而异。

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

相关·内容

TensorFlow Lite 系统上实现即时人体姿态跟踪

例如,模型可以估计一个人的肘部和/或膝盖图像中的位置。姿势估计模型不识别图像中的人,只识别关键身体部位的位置。...PoseNet示例应用程序 与现有的Java编写的Android示例相比,PoseNet示例应用程序是Kotlin开发的。...此功能由estimateSinglePose()提供,该方法处理的RGB位图上运行TensorFlow Lite解释器并返回Person对象。本页面解释如何解释PoseNet的输入和输出。...画布对象上绘制新的位图。 5、使用从Person对象获取的关键点的位置画布上绘制骨架。显示置信度得分高于某个阈值的关键点,默认值为0.2。...SurfaceView通过视图画布上获取、锁定和绘制来确保将surface毫不延迟地放到屏幕上。

3.7K30

开发_数据存储技术_外部存储

外部存储,即将数据存储sdcard中,当然存储的前提是手机或者模拟器先具有sdcard目录 然而上一句话还是有歧义的。...事实上所有的设备都有外部存储和内部存储,这两个名称来源于的早期设备,那个时候的设备内部存储确实是固定的,而外部存储确实是可以像U盘一样移动的。...所以不管手机是否有可移动的sdcard,他们总是有外部存储和内部存储。最关键的是,我们都是通过相同的api来访问可移动的sdcard或者手机自带的存储(外部存储)。...--------------------------------------------------------------------------------------------- 相关知识: 开发..._数据存储技术_内部存储 开发_数据存储技术_SharedPreferences类 开发_数据存储技术_sqlite

1.9K80

2019-5-17-反模式之Continuous Obsolescence

Continuous Obsolescence 介绍 Obsolescence是过时,的意思。Continuous Obsolescence来自于软件技术的持续更新。...你辛辛苦苦写了一大波代码,发布时软件的SDK进行了更新,你调用的API被用了。你会不会想要拿刀去砍人呀?...微软经历了多次技术栈更迭之后,下定决心使用的.NET Standard就是一套.NET 技术栈的协议。他确保了之后所有的.NET 实现的更新都会对旧版本的API兼容。...也是一个例子,所有4.0开发的软件,5.0版本的设备上仍然可以使用。...这样就避免了持续更新导致的软件 参考链接: 反面模式 - 维基百科,自由的百科全书 AntiPatterns ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io

32320

5--网络编程之OKHttp3的使用

零、前言 的网络编程,服务端的知识是必不可少的,否则不知道该请求什么url,或不明白服务端是什么样的,总像是拼图少了一半 还好本人会些SpringBoot压箱底,这里提供了可访问的URL供大家测试...SpringBoot-02-之参数传递 依赖 implementation 'com.squareup.okhttp3:okhttp:3.11.0' ---- 一、GET请求 注:回调的Callback子线程执行..."那河畔的金柳,\n" + "是夕阳中的新娘;\n" + "波光里的艳影,\n" + "我的心头荡漾...下载本地.png ---- 七、端显示图片: 有了流,一切都好办:response.body().byteStream() 关于Bitmap的预处理等操,这里就不多说了,有兴趣的可见1-MI-Android...显示.png ---- 后记:捷文规范 1.本文成长记录及勘误表 项目源码 日期 备注 V0.1--无 2018-10-20 5--网络编程之OKHttp3的使用 2.更多关于我 笔名 QQ

1.3K40

Rafel RAT恶意软件可能影响39亿台旧手机

威胁攻击者正在大量部署一种名为「Rafel RAT」的开源恶意软件,攻击「过时」设备。...Check Point 分析大量网络攻击活动后发现,受害者运行的版本已达到生命周期终点(EoL),其中 87.5% 运行 11 及以上版本,只有 12.5% 的受感染设备运行 Android 12...鉴于很多「过时」版本不再接受安全更新,因此容易受到已知/发布漏洞的攻击。据此推测,有超过39亿台的设备/手机(包括用户)或被暴露在这一威胁之下。...之后,威胁攻击者很快就清除了通话记录,更改壁纸以显示自定义信息,锁定屏幕,激活设备振动,并发送包含赎金说明的短信,敦促受害者 Telegram 联系威胁攻击者。

11310

4--网络编程之XML总汇篇

形如:xxx组成的闭合标签 的res目录下的xml想必大家都是否熟悉,它们最终都是代码中被读取并解析发挥效果的 的SharedPreferences是以Xml的形式存储数据的...,就连AndroidManifest注意一看也是Xml 可以说xml涉及到了的很多方面,我们并不陌生,Xml最大的好处就是解耦,容易复用和更换 ?...效率 备注 Pull解析 事件驱动 否 是 高 专有 Sax解析 事件驱动 否 否 高 无 Dom解析 直接全部加载 是 否 低 解析时构建dom树 准备的待解析xml: 3000 九方玄玉 ---- 一、Pull解析概述 Pull是内置的...e.printStackTrace(); } ---- ---- 后记:捷文规范 1.本文成长记录及勘误表 项目源码 日期 备注 V0.1--无 2018-10-15 4--网络编程之

68420

2-SIII-Android数据固化之Xml的Pull解析和存储

形如:xxx组成的闭合标签 的res目录下的xml想必大家都是否熟悉,它们最终都是代码中被读取并解析发挥效果的 的SharedPreferences是以Xml的形式存储数据的...,就连AndroidManifest注意一看也是Xml 可以说xml涉及到了的很多方面,我们并不陌生,Xml最大的好处就是解耦,容易复用和更换 的Xml解析有Pull解析、Sax解析和Dom...pull解析.png Pull解析概述 Pull是内置的,基于事件触发的解析器 Pull解析器小巧轻便,解析速度快,简单易用 主动从解析器中获取事件,可以满足了需要的条件后不再获取事件,结束解析...break; case "name": //对于没有属性的标签,可以nextText...Xml.newSerializer(); FileOutputStream fos = null; try { String path = Environment.getExternalStorageDirectory

64830

Weex初探--从安装到运行首个app

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html JDK需要配置两个环境变量:(如果配置就无需再配置...SDK和模拟器: 打开Android Studio,File --> Settings --> 搜索sdk,找到对应的sdk进行安装即可,这里也可以选择安装模拟器,找到对应的勾选进行下载即可。...latest进行安装weex,如下图所示: npm install -g weex-toolkit (顺便说一下卸载命令行 npm uninstall -g weex-toolkit 这个是为了随时坑准备的...(三)添加支持 执行weex platform add android命令。如图: ?...(四)运行项目 执行npm run android命令,运行在设备上,如果要运行在模拟器,需要提前打开模拟器。使用示意图如下: ? weex的demo演示

1K30

笔记——Gradle入门(十三)

——参考:任主席Gradle从入门到实战 - Groovy基础 [微信截图_123.png] 2、向前兼容:系统向前兼容低版本的sdk minSdkVersion <targetSdkVersion...<= compileSdkVersion app当前运行的Android版本API取决于设备版本与targetSdkVersion版本比较 ,如果设备>=targetSdkVersion版本,则当前...app运行的版本为targetSdkVersion;如果设备<targetSdkVersion版本,则当前app运行版本为设备系统版本。...实际上,api关键字是用来替代compile关键字的,因为compile关键字将来会被高版本的gradle,使用compile关键字会报错并提示使用api关键字代替。...api或compilemoudle模式开发中,添加的依赖库对外是可见的。

68130

Android:检测网络状态&监听网络变化

Android开发中,许多功能需要网络连接,所以开发过程中需要进行手机网络的检测 今天,我将教大家如何进行网络状态的检测和监听网络状态的变化 ---- 目录 ? ---- 1....及以上时,getNetworkInfo(int networkType)方法已被,取而代之的是: getAllNetworks(); getNetworkInfo(android.net.Network...所以检测网络状态时需要分版本进行检测 1.3 具体检测代码 //检测当前的网络状态 //API版本23以下时调用此方法进行检测 //因为API23后getNetworkInfo(int networkType)方法被...System.out.println("网络状态发生变化"); //检测API是不是小于23,因为到了API23之后getNetworkInfo(int networkType)方法被...总结 相信大家已经非常了解改如何检测网络状态&监听网络变化 接下来,我会继续介绍具体如何在Android中的其他知识,有兴趣可以继续关注Carson_Ho的开发笔记 ---- 请帮顶 / 评论点赞!

15.5K22

为鸿蒙说两句公道话(我对鸿蒙的一些看法)

因为如果真正的开发一套全新内核的操作系统,会遇到以下这些无法解决的问题: 没有生态:如果不跟共用底层,那么无法兼容目前海量的应用程序,一个没有应用程序的系统,再强大再好用,你会切换吗 ?...答案是肯定的,因为已经有很多类似的成功案例,我们看看以下两个比较类似的案例: kunbernetes 决定 Docker 苹果 M1 全面替换 intel 芯片 他们的共同点是什么 ?...所以你无需关心它底层到底是的AOSP还是真正重写的鸿蒙OS内核。...文章到这里就差不多可以总结了: 我认为鸿蒙选择跟共用底层是正确的选择,不仅可以让用户无缝升级,还能复用目前海量的 APP 市场,真正从用户使用的角度设计系统,而不是被民族主义冲坏理智的头脑 我相信鸿蒙...OS未来替换会逐渐的AOSP底层,完成真正意义上的“完全自主研发操作系统”,这个里程碑对于我们还是蛮有意义。

58721
领券