【问题标题】:Android 10 How to create file/folder in file manger that is accesible with all app [duplicate]Android 10如何在所有应用程序都可以访问的文件管理器中创建文件/文件夹[重复]
【发布时间】:2019-10-15 10:05:16
【问题描述】:

我正在使用下面的代码在存储中创建一个目录/文件。

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

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

谁能建议如何在应用程序范围之外创建一个文件夹?

【问题讨论】:

    标签: android file-manager android-10.0


    【解决方案1】:

    对于 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
         }
    }
    

    【讨论】:

    • 这不适用于 Android 10(默认)和 Android R+(适用于所有应用程序)。这个问题专门针对 Android 10。
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多