diff --git a/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt b/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt index 39aeb2ee1e2c323f12e29671c4f2c98407aa7b34..0289894aedb596ab4bf2296e51c889908463cc69 100644 --- a/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/atm/bondowowo/ui/settings/SettingsFragment.kt @@ -1,5 +1,7 @@ package com.atm.bondowowo.ui.settings +import android.app.AlertDialog +import android.content.DialogInterface import android.content.Intent import android.os.Bundle import android.view.LayoutInflater @@ -38,8 +40,9 @@ class SettingsFragment : Fragment() { database = AppDatabase.getInstance(context) btn_export.setOnClickListener { - val listOfTransactions = database.transactionDao().getAll() - ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions) +// val listOfTransactions = database.transactionDao().getAll() +// ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions) + showExportFileDialog() } btn_send_email.setOnClickListener { @@ -73,5 +76,24 @@ class SettingsFragment : Fragment() { requireContext().sendBroadcast(intent) } + private fun showExportFileDialog() { + val options = arrayOf("XLSX", "XLS") + val builder = AlertDialog.Builder(requireContext()) + builder.setTitle("Choose file format") + builder.setItems(options, DialogInterface.OnClickListener { dialog, which -> + when (which) { + 0 -> exportToFormat("xlsx") + 1 -> exportToFormat("xls") + } + dialog.dismiss() + }) + builder.show() + } + + private fun exportToFormat(fileFormat: String) { + val listOfTransactions = database.transactionDao().getAll() + ExportToFileUtil.exportDataToFile(requireContext(), listOfTransactions, fileFormat) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt b/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt index 383fe812b14cd50780de7318ae90c29c7688838f..320b070f340f07bec54faf854cc2951b7250c80c 100644 --- a/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt +++ b/app/src/main/java/com/atm/bondowowo/utils/ExportToFileUtil.kt @@ -11,7 +11,8 @@ object ExportToFileUtil { fun exportDataToFile( context: Context, - transactionEntities: List<TransactionEntity> + transactionEntities: List<TransactionEntity>, + fileFormat: String ) { val networkStateLiveData = NetworkStateLiveData(context) networkStateLiveData.observeForever { isConnected -> @@ -40,13 +41,20 @@ object ExportToFileUtil { dataRow.createCell(4).setCellValue(transaction.lokasi ?: "") } - val file = File(context.getExternalFilesDir(null), "transaction_data.xlsx") + val file = if(fileFormat == "xlsx"){ + File(context.getExternalFilesDir(null), "transaction_data.xlsx") + } else{ + File(context.getExternalFilesDir(null), "transaction_data.xls") + } + val outputStream = FileOutputStream(file) workbook.write(outputStream) workbook.close() outputStream.close() Toast.makeText(context, "Data exported to ${file.absolutePath}", Toast.LENGTH_SHORT).show() +// Toast.makeText(context, file.name, Toast.LENGTH_SHORT).show() + } else { Toast.makeText(context, "No transaction data available", Toast.LENGTH_SHORT).show() } diff --git a/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt b/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt index 4fb1ee3cf8fa59742a18f4d35ec024faf37a1c9d..dfca89a1190d695c329dc5e7a3b9bc694722bb6a 100644 --- a/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt +++ b/app/src/main/java/com/atm/bondowowo/utils/SendEmailUtil.kt @@ -22,23 +22,15 @@ object SendEmailUtil { val uri = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file) - val resInfoList = - context.packageManager.queryIntentActivities(Intent(Intent.ACTION_SEND).apply { - type = "application/vnd.ms-excel" - putExtra(Intent.EXTRA_STREAM, uri) - }, Context.MODE_PRIVATE) + val mimeType = if (file.extension == "xlsx") { + "application/vnd.ms-excel" + } else { + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" - for (resolveInfo in resInfoList) { - val packageName = resolveInfo.activityInfo.packageName - context.grantUriPermission( - packageName, - uri, - Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION - ) } val emailIntent = Intent(Intent.ACTION_SEND) - emailIntent.type = "application/vnd.ms-excel" + emailIntent.type = mimeType emailIntent.putExtra(Intent.EXTRA_EMAIL, arrayOf(UserPreferencesUtil.getEmail(context))) emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Export File") emailIntent.putExtra( @@ -47,6 +39,8 @@ object SendEmailUtil { ) emailIntent.putExtra(Intent.EXTRA_STREAM, uri) + emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + try { context.startActivity(Intent.createChooser(emailIntent, "Send mail...")) } catch (ex: android.content.ActivityNotFoundException) { @@ -71,3 +65,4 @@ object SendEmailUtil { return files?.firstOrNull() } } +