mirror of
https://github.com/SimpleMobileTools/Simple-Notes.git
synced 2025-03-25 21:10:12 +01:00
add handling for one time file exporting with scoped storage
This commit is contained in:
parent
b956dd017f
commit
6d06cf0f07
@ -1,5 +1,6 @@
|
|||||||
package com.simplemobiletools.notes.pro.activities
|
package com.simplemobiletools.notes.pro.activities
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -42,7 +43,9 @@ import java.nio.charset.Charset
|
|||||||
class MainActivity : SimpleActivity() {
|
class MainActivity : SimpleActivity() {
|
||||||
private val EXPORT_FILE_SYNC = 1
|
private val EXPORT_FILE_SYNC = 1
|
||||||
private val EXPORT_FILE_NO_SYNC = 2
|
private val EXPORT_FILE_NO_SYNC = 2
|
||||||
|
|
||||||
private val PICK_OPEN_FILE_INTENT = 1
|
private val PICK_OPEN_FILE_INTENT = 1
|
||||||
|
private val PICK_EXPORT_FILE_INTENT = 2
|
||||||
|
|
||||||
private lateinit var mCurrentNote: Note
|
private lateinit var mCurrentNote: Note
|
||||||
private var mNotes = ArrayList<Note>()
|
private var mNotes = ArrayList<Note>()
|
||||||
@ -226,6 +229,8 @@ class MainActivity : SimpleActivity() {
|
|||||||
super.onActivityResult(requestCode, resultCode, resultData)
|
super.onActivityResult(requestCode, resultCode, resultData)
|
||||||
if (requestCode == PICK_OPEN_FILE_INTENT && resultCode == RESULT_OK && resultData != null && resultData.data != null) {
|
if (requestCode == PICK_OPEN_FILE_INTENT && resultCode == RESULT_OK && resultData != null && resultData.data != null) {
|
||||||
importUri(resultData.data!!)
|
importUri(resultData.data!!)
|
||||||
|
} else if (requestCode == PICK_EXPORT_FILE_INTENT && resultCode == Activity.RESULT_OK && resultData != null && resultData.data != null) {
|
||||||
|
tryExportNoteValueToFile(resultData.dataString!!, getCurrentNoteText() ?: "", true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -651,9 +656,15 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun tryExportAsFile() {
|
private fun tryExportAsFile() {
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
if (hasPermission(PERMISSION_WRITE_STORAGE)) {
|
||||||
if (it) {
|
exportAsFile()
|
||||||
exportAsFile()
|
} else {
|
||||||
|
Intent(Intent.ACTION_CREATE_DOCUMENT).apply {
|
||||||
|
type = "text/*"
|
||||||
|
putExtra(Intent.EXTRA_TITLE, "${mCurrentNote.title.removeSuffix(".txt")}.txt")
|
||||||
|
addCategory(Intent.CATEGORY_OPENABLE)
|
||||||
|
|
||||||
|
startActivityForResult(this, PICK_EXPORT_FILE_INTENT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -751,9 +762,13 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun tryExportNoteValueToFile(path: String, content: String, showSuccessToasts: Boolean, callback: ((success: Boolean) -> Unit)? = null) {
|
fun tryExportNoteValueToFile(path: String, content: String, showSuccessToasts: Boolean, callback: ((success: Boolean) -> Unit)? = null) {
|
||||||
handlePermission(PERMISSION_WRITE_STORAGE) {
|
if (path.startsWith("content://")) {
|
||||||
if (it) {
|
exportNoteValueToUri(Uri.parse(path), content)
|
||||||
exportNoteValueToFile(path, content, showSuccessToasts, callback)
|
} else {
|
||||||
|
handlePermission(PERMISSION_WRITE_STORAGE) {
|
||||||
|
if (it) {
|
||||||
|
exportNoteValueToFile(path, content, showSuccessToasts, callback)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -791,6 +806,7 @@ class MainActivity : SimpleActivity() {
|
|||||||
file.printWriter().use { out ->
|
file.printWriter().use { out ->
|
||||||
out.write(content)
|
out.write(content)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (showSuccessToasts) {
|
if (showSuccessToasts) {
|
||||||
noteExportedSuccessfully(path.getFilenameFromPath())
|
noteExportedSuccessfully(path.getFilenameFromPath())
|
||||||
}
|
}
|
||||||
@ -802,6 +818,18 @@ class MainActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun exportNoteValueToUri(uri: Uri, content: String) {
|
||||||
|
try {
|
||||||
|
val outputStream = contentResolver.openOutputStream(uri)
|
||||||
|
outputStream!!.bufferedWriter().use { out ->
|
||||||
|
out.write(content)
|
||||||
|
}
|
||||||
|
noteExportedSuccessfully(mCurrentNote.title)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
showErrorToast(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun noteExportedSuccessfully(title: String) {
|
private fun noteExportedSuccessfully(title: String) {
|
||||||
val message = String.format(getString(R.string.note_exported_successfully), title)
|
val message = String.format(getString(R.string.note_exported_successfully), title)
|
||||||
toast(message)
|
toast(message)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user