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

Android开发:即使在“清晰的数据”之后,也可以保留文件吗?

在Android开发中,即使在“清晰的数据”之后,也可以保留文件。当我们在Android应用中使用文件存储时,有两种主要的存储选项:内部存储和外部存储。

  1. 内部存储: 内部存储是应用私有的存储空间,只有应用本身可以访问。即使在应用被清除数据或卸载后,内部存储中的文件也会被删除。这种存储方式适合存储应用的私有数据或敏感信息。
  2. 外部存储: 外部存储是指SD卡或其他可移动存储介质。在Android中,可以通过使用外部存储权限来访问外部存储空间。即使在应用被清除数据或卸载后,外部存储中的文件仍然可以保留。这种存储方式适合存储一些不敏感的公共文件或用户可以自由访问的文件。

需要注意的是,为了保护用户的隐私和数据安全,Android系统在Android 10及更高版本中引入了Scoped Storage机制。该机制限制了应用对外部存储的直接访问权限,应用只能在自己的私有目录或者通过媒体库访问公共文件。因此,在Android 10及更高版本中,即使在清除数据后,应用无法直接保留外部存储中的文件。

推荐的腾讯云相关产品:

  • 对于文件存储:腾讯云对象存储(COS)是一种高可用、高可靠、强安全性的云存储服务,适用于存储和处理大规模非结构化数据。 产品介绍链接:https://cloud.tencent.com/product/cos

请注意,以上答案仅供参考,具体的技术实现和产品选择应根据实际需求和情况进行评估和决策。

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

相关·内容

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

我们 Android 10 中首次引入了 "分区存储" 概念,旨在保护应用和用户数据并减少文件混乱。自此之后我们收到了开发者们宝贵建议,这些建议有助于我们对该功能持续优化,非常感谢大家!...我们在过去文章推送里发布过关于 Android 存储方案最佳实践,您可以先回顾一下最佳实践这篇 文章。 分区存储允许应用通过 File API 使用文件路径访问文件?...与 Android 10 相比, Android 11 上使用 SAF 会有其他限制?...得益于系统为每个媒体存储文件赋予了应用属性,应用不需要有存储权限可以读写到它们最初提供给媒体存储文件。 Data Column 弃用之后,有没有对此功能其他使用建议?...preserveLegacyExternalStorage 标记允许应用在升级系统时保留原有存储权限,即使是升级至 Android 11。

1K10

遇到小程序难题?我们帮你解答 | 小程序问答 #2

开发小程序需要注册域名? 分两种情况: 如果小程序需要与你服务器进行数据交换,那么你就必须注册域名,即使开发环境需要; 如果你开发小程序不需要联网,功能能正常使用,如计算类小程序。...Android 用户只需小程序列表中,长按不需要小程序,便能删除单个小程序。 需要注意是,小程序列表里删除单个小程序,会同时删除你在这个小程序中所有数据(包括账号信息、本地缓存等)。 7....即使你删除掉小程序列表里所有的小程序,「发现」页面仍然会保留小程序入口,不离不弃…… 9. 为什么小程序无法添加到桌面? 将小程序添加到桌面,是 Android 用户特权。...如果你是 Android 用户,却无法桌面生成小程序图标? 可以到系统设置中,打开「应用管理」,找到「微信」,打开「发送到桌面」或「生成快捷方式」选项即可。...此外,一些桌面 app 可能会阻止微信添加小程序图标。你可以下载、安装新桌面 app,以便微信能够顺利添加小程序至新桌面。 10. 点击使用了小程序之后,就算是安装了这个小程序

61420

Android 10适配要点,作用域存储

这个功能使用得极其广泛,几乎所有的App都喜欢SD卡根目录下建立一个自己专属目录,用来存放各类文件数据。 那么这么做有什么好处?我想了一下,大概有两点吧。...第二,存储SD卡文件即使应用程序被卸载了,这些文件仍然会被保留下来,这有助于实现一些需要数据被永久保留功能。 然而,这些“好处”真的是好处?...因为这会将用户SD卡空间搞得乱糟糟,而且即使我卸载了一个完全不再使用程序,它所产生垃圾文件却可能会一直保留在我手机上。...如果你项目指定targetSdkVersion低于29,那么即使不做任何作用域存储方面的适配,你项目可以成功运行到Android 10手机上。...然后onActivityResult()方法当中,我们就可以获取到用户选中文件Uri,之后通过ContentResolver打开文件输入流来进行读取就可以了。 Demo效果: ?

2.1K10

Android 分区存储常见问题解答

为了帮您排忧解难,我们收集了一些有关分区存储常见问题,同时为如何适配您应用提供了一些建议和可能替代方案。 Q: android:requestLegacyStorage 会被移除?...如果您不想使用系统文件选择器,您仍然可以请求 READ_EXTERNAL_STORAGE 权限,它会使您应用可以访问所有的照片、视频以及音频文件,同时包含访问 File API 权限!...Q: 我想保存非媒体文件,但我不想在卸载我应用时删除它们。我需要使用 SAF ? A: 也许需要。 如果这些文件允许应用外打开而无需通过您应用,那么系统文件选择器是较好选择。...这将使用户可以保留这些数据即使卸载应用时亦是如此。 △ 上图为拥有 "脆弱用户数据" 应用卸载对话框。对话框中包含了一个复选框,用于指示系统是否应该保留应用数据。...注意,从 Android 10 开始,提供内容 不再需要请求权限。 别忘了可以通过 ACTION_SEND 来与 其他应用共享数据 (或允许它们 与您应用共享数据)!

98110

一篇文章带你领略Android混淆魅力

水月沐风 读完需要 19 分钟 速读仅需7分钟 作者:水月沐风 链接:https://juejin.im/post/5d1717996fb9a07eeb13bc95 Android 日常开发过程中...Affected Modules: app 2.4 自定义要保存资源 当我们开启了资源压缩之后,系统会默认替我们移除所有未使用资源,假如我们需要保留某些特定资源,可以我们项目中创建一个被标记...{*;} @Keep: 除了以上方式,你可以选择使用 @Keep 注解来保留期望代码,防止它们被混淆处理。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典?卖个关子,我们先来看一张效果图: ?

92420

Android开发:请你吃一顿史上最全Android混淆大餐

Android 日常开发过程中,混淆是我们开发 App 一项必不可少技能。只要是我们亲身经历过 App 打包上线过程,或多或少都需要了解一些代码混淆基本操作。那么,混淆到底是什么?...Affected Modules: app 自定义要保留资源 当我们开启了资源压缩之后,系统会默认替我们移除所有未使用资源,假如我们需要保留某些特定资源,可以我们项目中创建一个被 <resources...同时,反序列化过程创建对象从根本上来说还是借助于反射,混淆之后 key 会被改变,所以会违背我们预期效果。 四大组件 Android四大组件同样不应该被混淆。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典?卖个关子,我们先来看一张效果图: ?

3.8K30

Android混淆你了解多少?

Android 日常开发过程中,混淆是我们开发 App 一项必不可少技能。只要是我们亲身经历过 App 打包上线过程,或多或少都需要了解一些代码混淆基本操作。那么,混淆到底是什么?...Affected Modules: app 自定义要保留资源 当我们开启了资源压缩之后,系统会默认替我们移除所有未使用资源,假如我们需要保留某些特定资源,可以我们项目中创建一个被 <resources...同时,反序列化过程创建对象从根本上来说还是借助于反射,混淆之后 key 会被改变,所以会违背我们预期效果。 四大组件 Android四大组件同样不应该被混淆。...由于方法名称和类名称都经过混淆处理,即使程序发生崩溃问题,很难定位问题所在。...Android ProGuard 为我们提供了默认"混淆字典",即将元素名称转为英文小写字母形式。那么,我们可以定义自己混淆字典

1.7K00

2022 年 Flutter 适合我吗?Flutter VS Other 量化对比

如图所示,去年下半旬数据调查中,Flutter 成为了排名第一“被使用”和“被喜爱”跨平台框架,可以看到 Flutter 2019 到 2022 有了很明显增长,有接近 42% 跨平台开发者会使用...而在官方去年 Q4 数据调查里,在过去 6 个月中,分别有 72% 和 91% 开发者使用 Flutter 为 iOS 和 Android 开发 App** 。...首先我们创建几个空项目,然后打包时只保留 arm64-v8a 相关动态库,因为一般情况下上架只会保留其中一种 so 库。...当然这不是最麻烦,最麻烦电脑 A 上运行成功之后 B 电脑 npm 之后发现无法运行问题,相信这是每个 React Native 开发必修课。...等这些框架,它们目的就是将前端 H5 能力拓展到 App 端,让前端开发能力可以方便开发 Android 和 iOS 应用,那时候口号我记得是:write Once, run everywhere

3.5K30

测试工程师「 面试题 」那点故事!

目录 公司测试流程是什么? 你提一个bug,开发不认同的话怎么办? 熟悉数据,出道SQL题写出来? 熟悉Linux?常用命令有哪些? 熟悉adb命令?常用有哪些?...产品经理确认本次版本需求,召开需求评审会,进行估时排期,需求和时间都确定之后,UI出设计图,开发人员进行开发,测试人员编写测试用例,召开用例评审会议,制定测试计划,包括准备一些测试数据,等到开发提测,...该方法适合于逻辑判断复杂场景,通过穷举条件获得结果,对结果再进行优化合并,会得到一个判断清晰策略表; 验法:简单说,就是各因素互相独立情况下,设计出一种特殊表格,找出能以少数替代全面的测试用例...一、功能 名与密码均不输入情况下,点击提交,看toast提示信息 确用户名及密码,点击登录,验证是否可以正常登录 功之后是否跳转相对应页面 确用户名+错误密码,点击登录,是否可以正常登录 误用户名...POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签 POST 请求对数据长度没有要求 15.对于加班可以接受

58010

Android 获取系统各个目录方法

Android开发过程中,我们经常会对文件系统进行操作——存放、释放我们应用数据Android系统中提供了各种功能文件目录,每个目录都有相应特点和功能。...这篇文章主要介绍和记录一下实际开发过程中常用各个文件目录。 (1)内部存储(Internal Storage) 内部存储是App私有目录,当一个应用卸载之后,内部存储中这些文件被删除。...,外部存储中目录实际上分为两种: -公共文件(目录) 文件可以被自由访问,且文件数据对其他应用或者用户来说都是由 意义,当应用被卸载之后,其卸载前创建文件仍然保留。...().getAbsolutePath()); -私有文件 由于是外部存储原因即使是这种类型文件能被其他程序访问,只不过一个应用私有的文件对其他应用其实是没有访问价值(恶意程序除外)。...外部存储上,应用私有文件价值在于卸载之后,这些文件会被删除。类似于内部存储。

6K10

Android安全攻防战,反编译与混淆技术完全解析(上)

反编译 我们都知道,Android程序打完包之后得到是一个APK文件,这个文件可以直接安装到任何Android手机上,我们反编译其实也就是对这个APK文件进行反编译。...开始学习之前,首先我们需要准备一个APK文件,为了尊重所有开发者,我就不拿任何一个市面上软件来演示了,而是自己写一个Demo用来测试。...当然即使和我执行一模一样操作,也有可能会在这里反编译失败,比如说会报如下错误: ?...不过我对这种黑技术并没有什么太大兴趣,因此我也没有去做具体研究,但即使是这样,已经可以对程序逻辑做一定程度修改了。...签名之后APK文件现在已经可以安装到手机上了,不过在此之前Android还极度建议我们对签名后APK文件进行一次对齐操作,因为这样可以使得我们程序Android系统中运行得更快。

1.6K80

测试人员面试需要掌握内容

测试人员面试需要掌握内容 目录 1、公司测试流程是什么? 2、你提一个bug,开发不认同的话怎么办? 3、熟悉数据,出道SQL题写出来? 4、熟悉Linux?常用命令有哪些?...13、白盒测试和黑盒测试区别? 14、GET请求与POST请求有什么区别? 15、对于加班可以接受? 1、公司测试流程是什么?...产品经理确认本次版本需求,召开需求评审会,进行估时排期,需求和时间都确定之后,UI出设计图,开发人员进行开发,测试人员编写测试用例,召开用例评审会议,制定测试计划,包括准备一些测试数据,等到开发提测,...该方法适合于逻辑判断复杂场景,通过穷举条件获得结果,对结果再进行优化合并,会得到一个判断清晰策略表; 正交实验法:简单说,就是各因素互相独立情况下,设计出一种特殊表格,找出能以少数替代全面的测试用例...POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录中 POST 不能被收藏为书签 POST 请求对数据长度没有要求 15、对于加班可以接受

56110

一次Android实习经历告诉你:老爸不是张一鸣,该用什么技巧进字节?

字节跳动面试研发岗,已开始了一轮 目前,头条研发岗 Android实习或社招岗位,都非常紧急招人!...能否在有限时间内写出清晰简洁、逻辑清晰代码,不仅可以考察出候选人是否有扎实基本功,可以让面试官对候选人在未来是否能够胜任相应岗位工作有一个基础判断。...大量做题不仅可以短时间内提高同学们解题速度,会在一定程度上帮助你拓展自己答题思路。 当然,如果发现同学刷题,面试官会变种问题,从侧面考察同学是否死记硬背答案。...诚实守信是做人第一要务,也是字节跳动用人底线。即使是视频面试,面试官也是可以看到考生行为!答应我,像类似「一边考试一边用ipad查答案」这种事情千万不要干好嘛!...这些内容均免费分享给大家,需要完整版朋友,点这里可以看到全部内容 作为一名Android开发热爱者,只要Android不死,我就会一直Android开发道路上前行。

49300

Android包体积优化(常规、进阶、极致)

这是官方新版打包流程,虽然省略了一些步骤,但是大致流程还是比较清晰。...经过上面的操作,包体积减小4%,这还只是一个4.7MBAPK而已。 5.WebP 那这9张图还能继续优化可以,WebP格式体积更小,而已AS提供了一键转换支持。...'), 'proguard-rules.pro' } } 要配合混淆minifyEnabled一起使用才行,原理很简单,代码移除之后,引用资源也就变成无用资源了,才可以进一步缩减...2.移除无用三方库 引入之后未使用,或者是功能下架之后未移除。 3.功能重复三方库整合 比如glide和picasso,都是图片库,保留其一即可。...2.砍功能 有些功能可能想很美好,但上线之后收益并不大,是否需要重新思考价值点,最好找到数据依托,再跟产品打架。

84730

Android面试题大全

需要注意AndroidManifest文件中进行配置广播接收者会随系统启动而一直处于活跃状态,只要接收到感兴趣广播就会触发(即使程序未运行)。...第一种是静态注册,可成为常驻型广播,这种广播需要在Androidmanifest.xml中进行注册,这中方式注册广播,不受页面生命周期影响,即使退出了页面,可以收到广播这种广播一般用于想开机自启动啊等等...篡改:广播接收者中,调用setResult()方法,可以向广播中添加数据,并在后续接收者中,可以通过getResult()获取这些数据,同时,后续接收者可以再次调用setResult()方法重新向广播中写入数据...Android类加载器 Android开发中,不管是插件化还是组件化,都是基于Android系统类加载器ClassLoader来设计。...优化,然后再生成一个最终class.dex,目的是把不同class文件重复东西只需保留一份,早期Android应用开发中,如果不对Android应用进行分dex处理,那么最后一个应用apk只会有一个

1.3K50

借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM

Android开发进阶,从小工到专家》一书第26页中有这么一段话,说Android之父Andy Rubin在被采访时说过,设计Android之初他就希望Android能像FaceBook那样可以使用不同应用中功能模块儿...正式基于这一理念,Android被设计为高度组件化、可复用系统。 Android应用开发中,目前流行MVP和MVVM软件架构风格,让UI层和业务逻辑层,数据层充分解耦,充分分离。...Google刚推出android应用开发时,第一批吃螃蟹的人,也就是最早布道者,大都是看官方文档或历程一路摸爬滚打,总结而来经验。...模块化思想有两种,不但是技术组件模块化,不同业务之间可以把独立业务模块化。目的都是为了结构职责清晰,更大限度复用,提高稳定性和生产力。...sql和数据优势木发挥出来。这里我只想说SQL是强大,但是你会用高射炮去打蚊子。满足需要才是目的。我终端上压根用不到负复杂查询。

81140

聊聊有关SVG那些事儿

这方面矢量图存在明显优势,它可以表达清晰图片同时,不增加文件体积。而且只要你不重新设计图片,就用不着再去适配高dpi模式,矢量图什么分辨率都可以自适应。...(矢量图SVG,表达清晰图片同时还不增加文件体积,并且兼容所有分辨率)我们认为SVG是比较合适矢量化资源方案,因为它相比目前android一些矢量化方案更成熟、周边工具支持更好。...因此必须要考虑如何即可以用SVG但又不增加开发负担 让我们一起来见证下,经过微信团队优化后,真实有效数据吧! 清晰度 ? 两张xxhdpi资源OPPO R7Plus上显示结果。...而Android矢量图,便是Vector,Android被称为Vector Drawable。...而这里需要注明一点: ❈ Vector图像刚发布时候,是只支持Android 5.0+,自从AppCompat 23.2之后,Vector可以使用于Android 2.1以上所有系统,只需要引用

1.2K40

Android基础篇 Android 数据存储与性能

,使开发者能够以键值对方式,永久性保存一些原始数据类型数据,包括:布尔值,浮点值,整型值,长整型和字符串,被保存数据可以跨多个用户会话永久保留即使应用已经终止)。...为什么使用 SP 它优点是什么? 使用SP 为Android开发者提供了更为便利存储方式,但是相对他也是有一些缺点。...(3) 读取频繁 key 和不频繁 key 尽量不要放在一起(如果整个文件本身就较小则忽略,为了这点性能添加维护得不偿失)。 (4) 尽量不要存放 JSON 和 HTML,这种可以直接文件缓存。...现在开发是针对于设备开发,而并非手机app开发,如果app开发那种搞法非得出现问题不可。 因为Activity初始化静态变量会被置空,因此它生命周期是不稳定。...也就是说,Android中静态变量可能随时被系统置空,变为null,其它地方使用时候就会产生空指针现象 Android开发中不提倡过多使用static类型变量(除了 static final)

1.1K20

总是听到有人说AndroidX,到底什么是AndroidX?

Android技术迭代更新很快,各种新出技术和名词也是层出不穷。不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术?...Android系统刚刚面世时候,可能连它设计者也没有想到它会如此成功,因此不可能在一开始时候就将它API考虑非常周全。...举个例子,当Android系统发布到3.0版本时候,突然意识到了平板电脑重要性,因此为了让Android可以更好地兼容平板,Android团队3.0系统(API 11)中加入了Fragment功能...support-v4、appcompat-v7库不再支持那么久远系统了,但是它们名字却一直保留了下来,虽然它们现在实际作用已经对不上当初命名原因了。...另外Android Studio还会将你原来项目备份成一个zip文件,这样即使迁移之后代码出现了问题你还可以随时还原回之前代码。

2.1K20

android和androidx区别(为什么总是听到别人说自己坏话)

不知从什么时候开始,总是会时不时听到AndroidX这个名词,这难道又是什么新出技术?相信有很多朋友会存在这样疑惑,那么今天我就来写一篇科普文章,向大家介绍AndroidX前世今生。...Android系统刚刚面世时候,可能连它设计者也没有想到它会如此成功,因此不可能在一开始时候就将它API考虑非常周全。...举个例子,当Android系统发布到3.0版本时候,突然意识到了平板电脑重要性,因此为了让Android可以更好地兼容平板,Android团队3.0系统(API 11)中加入了Fragment功能...support-v4、appcompat-v7库不再支持那么久远系统了,但是它们名字却一直保留了下来,虽然它们现在实际作用已经对不上当初命名原因了。...另外Android Studio还会将你原来项目备份成一个zip文件,这样即使迁移之后代码出现了问题你还可以随时还原回之前代码。

1.3K20
领券