Это то, что я пробовал. В onActivityResult():
Код: Выделить всё
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == directoryPickerID) {
if (resultCode == Activity.RESULT_OK) {
data?.data?.also { uri ->
if (uri.toString() == "content://com.android.externalstorage.documents/tree/primary%3ADocuments") {
val documentsTree = DocumentFile.fromTreeUri(this, uri) ?: return
val childDocuments = documentsTree.listFiles()
for (childDocument in childDocuments) {
childDocument.name?.let { it1 -> Log.d("documentsUri", it1) }
}
with(defaultSharedPreferences.edit()) {
putString("documentsUri", uri.toString())
apply()
}
}
}
}
}
}
Код: Выделить всё
if (defaultSharedPreferences.contains("documentsUri")) {
val documentsUri = Uri.parse(defaultSharedPreferences.getString("documentsUri", ""))
val documentsTree = DocumentFile.fromTreeUri(this, documentsUri) ?: return
val childDocuments = documentsTree.listFiles()
for (childDocument in childDocuments) {
childDocument.name?.let { it1 -> Log.d("documentsUri2", it1) }
}
}
Как мне снова получить Uri с разрешениями, не прося пользователя снова взаимодействовать?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ument-tree
Мобильная версия