Я тестирую свое приложение на устройстве под управлением Android 9. Теперь приложение предназначено для Android 11 в соответствии с моим файлом Gradle:
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){}
Приложение создает MyFolder / myFile.boo, который доступен и может быть удален.
В документации разработчика четко указано: https://developer.android.com/about/versions/11/privacy
Приложения, предназначенные для Android 11 или более поздней версии, всегда подчиняются ограниченному хранилищу. В документации не упоминаются какие-либо исключения для конкретной сборки Android телефона.
Почему я могу создать этот файл и получить к нему доступ в соответствии с новыми ограничениями хранилища с ограниченной областью, если мое приложение заявило, что оно будет использовать хранилище с ограниченной областью?
The app creates MyFolder/myFile.boo
Он сам createNewFile (); не будет создавать папки. - person blackapps   schedule 20.12.2020when my app has declared that it will be using scoped storage?
Ваше приложение может использовать только возможности устройства. Приложения не могут заявлять, что они используют хранилище с ограниченным доступом. А объемное хранилище - это не дополнительная функция, а ограничение. - person blackapps   schedule 20.12.2020