Android 10如何在所有应用程序均可使用的文件管理器中创建文件/文件夹

时间:2019-10-15 10:05:16

标签: android file-manager android-10.0

我正在使用以下代码在存储中创建目录/文件。

   File file  = new File(Environment.getExternalStorageDirectory().toString(), "/MyDirectory");

在android 10中更新目标SDK版本29后,其无法正常工作。

有人可以建议如何在应用程序范围之外创建文件夹吗?

1 个答案:

答案 0 :(得分:-3)

对于Android版本10:

https://stackoverflow.com/a/58379655/3811983


对于低于Android 10的Android版本: (此处包括此内容,因为没有人仅针对Android 10开发。这将为想要在其应用程序中包含此功能的任何人提供完整的答案)

这是我遵循的并正在为我工​​作的步骤:

  • 在应用的AndroidManifest.xml文件中包括以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • 由于WRITE_EXTERNAL_STORAGE是危险权限,因此在应用程序运行时,请检查应用程序是否具有此权限,否则请请求用户授予此权限。

Doc1 Doc2 AirPermissions(简化Android运行时权限的轻量级库)

  • 检查是否存在外部存储,并且应用可以对其进行读写
if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
     // further code here
}
  • 如果一切正常,则可以继续创建公共目录:
val rootFile = android.os.Environment.getExternalStorageDirectory()
val appRootFolder = File(rootFile.absolutePath + "/MyDirectory")
if (appRootFolder.exists() && appRootFolder.isDirectory) {
     // proceed
} else {
     val wasAppRootFolderCreated = appRootFolder.mkdirs()
     if (wasAppRootFolderCreated) {
          // proceed
     } else {
          // error: could not create the folder
     }
}