为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 mkdir 在 Android Q 中创建文件夹

无法使用 mkdir 在 Android Q 中创建文件夹

哔哔one 2023-03-09 17:18:04
我的应用程序在所有 android 版本中创建文件夹没有问题,除了android Q,我不知道为什么我的代码在 android q 中不起作用这是我的代码:File dir = new File("/sdcard/test");       try{              if(dir.mkdir()) {                      Log.d("DOWNLOAD","Directory created");              } else {                     Log.d("DOWNLOAD","Directory is not created");              }            }catch(Exception e){                  e.printStackTrace();        }
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

<manifest ... >

 <!-- This attribute is "false" by default on apps targeting Android Q. ->

  <application android:requestLegacyExternalStorage="true" ... >


 </application>

</manifest>


查看完整回答
反对 回复 2023-03-09
?
手掌心

TA贡献1942条经验 获得超3个赞

在 Q 中,如果您想要访问不是普通音乐或媒体文件的文件,即在您的情况下,sdcard/test您需要执行以下操作:


为了访问另一个应用程序创建的任何其他文件,包括“下载”目录中的文件,您的应用程序必须使用存储访问框架,它允许用户选择特定文件。


引用来源: http: //developer.android.com/preview/privacy/scoped-storage


// Here are some examples of how you might call this method.

// The first parameter is the MIME type, and the second parameter is the name

// of the file you are creating:

//

// createFile("text/plain", "foobar.txt");

// createFile("image/png", "mypicture.png");


// Unique request code.

private const val WRITE_REQUEST_CODE: Int = 43

...

private fun createFile(mimeType: String, fileName: String) {

    val intent = Intent(Intent.ACTION_CREATE_DOCUMENT).apply {

        // Filter to only show results that can be "opened", such as

        // a file (as opposed to a list of contacts or timezones).

        addCategory(Intent.CATEGORY_OPENABLE)


        // Create a file with the requested MIME type.

        type = mimeType

        putExtra(Intent.EXTRA_TITLE, fileName)

    }


    startActivityForResult(intent, WRITE_REQUEST_CODE)

}

示例 src https://developer.android.com/guide/topics/providers/document-provider


查看完整回答
反对 回复 2023-03-09
  • 2 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信