Не могу создать папку в Android Q с MKDIR - PullRequest
0 голосов
/ 05 июля 2019

Мое приложение создает папку во всех версиях 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();
        }

1 Ответ

3 голосов
/ 05 июля 2019

В Q, если вы хотите получить доступ к файлу, который не является обычным музыкальным или мультимедийным файлом, например, в вашем случае sdcard/test, вам нужно сделать следующее:

чтобы получить доступ к любому другому файлу, созданному другим приложением, включая файлы в каталоге «загрузки», ваше приложение должно использовать Storage Access Framework, который позволяет пользователю выбирать определенный файл.

Цитата src: 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...