在面向Android 11的应用上未强制实施作用域存储

rqqzpn5f  于 2023-02-14  发布在  Android
关注(0)|答案(1)|浏览(137)

我正在运行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版本的任何例外。
为什么我的应用已声明将使用作用域存储,但我仍能在新的作用域存储限制下创建和访问此文件?

abithluo

abithluo1#

是的,但我不认为你可以在Android 11设备的外部存储根目录下创建自己的文件夹。但你可以在外部存储的所有普通公共目录下创建文件夹。你必须使用mkdir()mkdirs()创建文件夹。
Android 11像广告宣传的那样限制较少。
Accessing external storage in Android API 29
见答复第3点。

相关问题