将Android11中的文件保存到外部存储(SDK30)

我正在 Android 11(SDK 版本 30)上编写一个新应用程序,但我根本找不到有关如何将文件保存到外部存储的示例。

我阅读了他们的文档,现在知道他们基本上忽略了清单权限(READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE)。它们还会忽略android:requestLegacyExternalStorage="true"manifest.xml 应用程序标记中的 。

在他们的文档https://developer.android.com/about/versions/11/privacy/storage 中,他们写道您需要启用DEFAULT_SCOPED_STORAGEFORCE_ENABLE_SCOPED_STORAGE标志以在您的应用程序中启用范围存储。

我必须在哪里启用这些?当我完成此操作后,我如何以及何时获得写入外部存储的实际权限?有人可以提供工作代码吗?
我想保存 .gif、.png 和 .mp3 文件。所以我不想给画廊写信。

提前致谢。

回答

对应于所有 Api,包括 Api 30、Android 11 :

 public  static  File commonDocumentDirPath(String FolderName){
        File dir = null ;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            dir = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)+ "/"+FolderName );
        } else {
            dir = new File(Environment.getExternalStorageDirectory() + "/"+FolderName);
        }

    // Make sure the path directory exists.
   if (!dir.exists()) {
          // Make it, if it doesn't exit
         boolean success=dir.mkdirs();
         if(!success) {dir=null;}


   }
            
        return  dir ;

    }

现在,使用它commonDocumentDirPath来保存文件。

  • getExternalStoragePublicDirectory & getExternalStorageDirectory both are deprecated...

以上是将Android11中的文件保存到外部存储(SDK30)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>