This script requires two Python dependencies: beautifulsoup4
and openpyxl
. Install them first using pip:
$ pip install beautifulsoup4
$ pip install openpyxl
You might have to use sudo
if installing globally.
suspend fun packZipFileForBackup(context: Context): File? { | |
return withContext(Dispatchers.IO) { | |
val dbFile = context.getDatabasePath("dbName.db") | |
val dbParentDirectory = dbFile.parentFile | |
val zipFilePath = context.filesDir.path + "backup.zip" // create zip file for backup | |
val zipFile = File(zipFilePath) | |
val daraDir = context.filesDir.parentFile | |
if (daraDir != null) { | |
val sharedPrefDirectoryPath = daraDir.absolutePath + "/shared_prefs" |
fun onLocalBackupRequested(activity: Activity) { | |
val mimeTypes = arrayOf("application/zip") | |
val fn = getBackupFileName(prefix) | |
val intent = Intent(Intent.ACTION_CREATE_DOCUMENT) | |
.addCategory(Intent.CATEGORY_OPENABLE) | |
.setType("application/zip") | |
.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes) | |
.putExtra( | |
Intent.EXTRA_TITLE, fn | |
) |
override fun onActivityResult( | |
requestCode: Int, | |
resultCode: Int, | |
resultIntent: Intent? | |
) { | |
lifecycleScope.launch { | |
if (resultCode == Activity.RESULT_OK && resultIntent != null) { | |
val uri = resultIntent.data!! | |
val pfd = contentResolver.openFileDescriptor(uri, "w") | |
pfd?.use { |
suspend fun restoreFromInputStream(context: Context, | |
contentStream: InputStream): Boolean { | |
return withContext(Dispatchers.IO) { | |
var result = false | |
var toBeRestoredZipFile: File? = null | |
var extractedFilesDir: File? = null | |
try { | |
val dbFile = context.getDatabasePath("dbName.db") | |
val parentDbFile = dbFile.parentFile | |
val dataDir = requireNotNull(context.filesDir.parentFile) |
fun onLocalRestoreRequested(activity: Activity) { | |
val mimeTypes = arrayOf("application/zip", "application/octet-stream", "application/x-zip-compressed", "multipart/x-zip") | |
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT) | |
.addCategory(Intent.CATEGORY_OPENABLE) | |
.setType("*/*") | |
.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes) | |
.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION) | |
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) | |
activity.startActivityForResult(intent, 696) |
override fun onActivityResult( | |
requestCode: Int, | |
resultCode: Int, | |
resultIntent: Intent? | |
) { | |
lifecycleScope.launch { | |
if (resultCode == Activity.RESULT_OK && resultIntent != null) { | |
val uri = resultIntent.data!! | |
contentResolver | |
.takePersistableUriPermission( |
This script requires two Python dependencies: beautifulsoup4
and openpyxl
. Install them first using pip:
$ pip install beautifulsoup4
$ pip install openpyxl
You might have to use sudo
if installing globally.