- 仍然以targetSdkVersion 为 29,但是可在AndroidManifest.xml中application标签添加 android:requestLegacyExternalStorage="true",这样也可以,但是注意compileVersion也必须同时为 29 :
android {
compileSdkVersion 29
buildToolsVersion “29.0.3”
defaultConfig {
applicationId “com.android.test.lib”
minSdkVersion 19
t
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享
argetSdkVersion 29
versionCode 1
versionName “1.0”
}
…
}
这种方案暂时有效,但是官方在未来的版本中可能去掉这个设置。
- 如果你是存文件,并且只是应用内自己访问,可以将文件存在私有目录下,可以使用 getExternalFilesDir 或 getExternalCacheDir 等方法, 以下我列出了几种常用的私有目录文件访问方式获取到的对应路径:
| 方法 | 获取的路径 |
| :-- | :-- |
| getExternalFilesDir(null) | 根目录下的 Android / data / [your_packageName] / files |
| getExternalCacheDir() | 根目录下的 Android / data / [your_packageName] / files / cache |
| getExternalMediaDirs() | 根目录下的 Android / media / [your_packageName] |
| getFilesDir() | / data / user / 0 / [your_packageName] / files |
| getCacheDir() | / data / user / 0 / [your_packageName] / cache |
| openFileOutput(“aaa.txt”, Context.MODE_PRIVATE) | data / data / [your_packageName] / files / aaa.txt |
其中,getExternalFilesDir可以传一个名字,获取对应类型的文件夹:
// /storage/emulated/0/Android/data/[your_packageName]/files/Pictures
File dir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
// /storage/emulated/0/Android/data/[your_packageName]/files/documents
File dir = getExternalFilesDir(Environment.DIRECTORY_documentS);
// /storage/emulated/0/Android/data/[your_packageName]/files/Movies
File dir = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
但是这种方法只能访问应用自己的应用目录,不能访问除此之外的其他公共目录,这种被称为App-specific目录。访问公共目录或其他APP的App-specific目录,只能通过MediaStore、SAF、或者其他APP 提供的ContentProvider、FileProvider等访问。
【附】相关架构及资料源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,和技术大牛一起讨论交流解决问题。
+Weex)微信小程序、Flutter全方面的Android进阶实践技术,和技术大牛一起讨论交流解决问题。**
[外链图片转存中…(img-OqdV7JVl-1640917201274)]
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)