Mit meiner App erlaube ich meinen Benutzern, Bilder von anderen Benutzern herunterzuladen, und ich versuche ihnen zu erlauben, einen Speicherort zu speichern. Derzeit erlaube ich ihnen, einen Speicherort mit der folgenden Absicht auszuwählen: < /p>
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).apply {
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
putExtra(DocumentsContract.EXTRA_INITIAL_URI, pickerInitialUri)
}
< /code>
, den ich dann in meinen SharedPreferences im String -Format mit dem folgenden Code speichere: < /p>
suspend fun setSaveLocationUri(p0: Context, saveUri: Uri) {
val savePath = stringPreferencesKey("save_path_uri")
p0.dataStore.edit { settings ->
settings[savePath] = saveUri.toString()
}
}
< /code>
und dann später den URI mit dem folgenden Code erneut abrufen: < /p>
fun getSaveLocationUri(p0: Context): Uri {
val savePath = stringPreferencesKey("save_path_uri")
val flow: Flow = p0.dataStore.data.map { preferences ->
preferences[savePath] ?: "NOT SET"
}
val saveUriString: String
runBlocking(Dispatchers.IO) {
saveUriString = flow.first()
}
return if (saveUriString != "NOT SET") {
Uri.parse(saveUriString)
} else {
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toUri()
}
}
< /code>
Hier stelle ich sicher, dass ich, wenn sie noch kein Verzeichnis ausgewählt haben Probleme damit. Die Daten, die ich speichern möchte, sind ein Bild oder ein GIF, sie können von Typen sein: GIF, PNG, JPG und Webp. Ich habe die Daten für das Bild, die in Form eines Bytearray gespeichert werden müssen. .>
So erstellen Sie Datei aus einem Verzeichnis, das Sie als URI gespeichert haben ⇐ Android
-
- Similar Topics
- Replies
- Views
- Last post