我正在运行Android 9的设备上测试我的应用。根据我的Gradle文件,该应用现在面向Android 11:
android {
compileSdkVersion 30
buildToolsVersion '30.0.3'
defaultConfig {
applicationId "com.xxx.yyy.zzz"
minSdkVersion 15
targetSdkVersion 30
versionCode 15455
versionName "4.55"
multiDexEnabled true
}
在运行应用程序之前,我从测试设备中删除了以前的版本。
使用以下代码运行面向Android 11的应用时:
try {
File oldDir = new File(Environment.getExternalStorageDirectory(), "MyFolder");
File afile = new File(oldDir, "myFile.boo");
afile.createNewFile();
}
catch(IOException e){}
应用程序创建myFile.boo可访问和可删除的MyFolder/ www.example.com。
开发人员文件明确指出:https://developer.android.com/about/versions/11/privacy
“针对Android 11或更高版本的应用程序总是受到范围存储行为的影响。”这些文档没有提到特定手机的Android版本的任何例外。
为什么我的应用已声明将使用作用域存储,但我仍能在新的作用域存储限制下创建和访问此文件?
1条答案
按热度按时间abithluo1#
是的,但我不认为你可以在Android 11设备的外部存储根目录下创建自己的文件夹。但你可以在外部存储的所有普通公共目录下创建文件夹。你必须使用
mkdir()
或mkdirs()
创建文件夹。Android 11像广告宣传的那样限制较少。
Accessing external storage in Android API 29
见答复第3点。