Android 11 次写入访问 sdcard/Android/someapp

Android 11 Write Access to sdcard/Android/someapp

我们正在尝试将一个应用程序从 10 迁移到 11,这个应用程序修改了另一个应用程序“sdcard/Android/someapp”目录中的 XML 文件。我们一直在浏览,有很多关于这个主题的东西,其中 none 似乎不再给我们写这个文件的权限。此应用程序适用于 10,但不适用于 11。我们已请求“管理所有文件”权限,该权限似乎已被授予,但仍然无法 read/write 此权限??? 这是我们请求权限的代码......我们是否遗漏了什么?

        if (getApplicationContext().getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) {

            if (!Environment.isExternalStorageManager()){
                try {
                    val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
                    intent.addCategory("android.intent.category.DEFAULT")
                    intent.data = Uri.parse(String.format("package:%s", applicationContext.packageName))
                    startActivityForResult(intent, 2296)
                } catch (e: Exception) {
                    val intent = Intent()
                    intent.action = Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
                    startActivityForResult(intent, 2296)
                }
            }
        } else {
            //below android 11
            if (Environment.isExternalStorageLegacy()){
                permissioncheck = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
                if (permissioncheck == PackageManager.PERMISSION_DENIED){
                    ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE), REQUEST_WRITE_EXTERNAL_CODE);
                }

                permissioncheck = ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE);
                if (permissioncheck == PackageManager.PERMISSION_DENIED){
                    ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE), REQUEST_READ_EXTERNAL_CODE);
                }
            }
        }

提前致谢!

Google 修改了 Android 11 的权限。如果您将 Android 10 作为目标(但 Google 将无法刷新您的应用)

您应该更改权限并写入媒体存储: https://developer.android.com/training/data-storage/shared/media

看起来底线是您将无法写入 And11+

中的另一个应用程序外部存储文件夹 (/sdcard/Android/data/com.app.someapp)

感谢您的帮助!