diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
index 88dbf1c4..ecb5170c 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
@@ -9,6 +9,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
+import androidx.core.content.FileProvider
import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import kotlinx.android.synthetic.main.fragment_settings.*
@@ -35,8 +36,7 @@ import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.billing.AppGuard
import net.pokeranalytics.android.util.billing.IAPProducts
import net.pokeranalytics.android.util.csv.ProductCSVDescriptors
-import net.pokeranalytics.android.util.extensions.fullDateTime
-import net.pokeranalytics.android.util.extensions.shortDateTime
+import net.pokeranalytics.android.util.extensions.dateTimeFileFormatted
import timber.log.Timber
import java.io.File
import java.io.IOException
@@ -69,6 +69,7 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
private lateinit var settingsAdapterRow: RowRepresentableAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ super.onCreateView(inflater, container, savedInstanceState)
return inflater.inflate(R.layout.fragment_settings, container, false)
}
@@ -215,33 +216,35 @@ class SettingsFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRep
val sessions = getRealm().where(Session::class.java).findAll().sort("startDate")
val csv = ProductCSVDescriptors.pokerAnalyticsAndroid.toCSV(sessions)
+ Timber.d("CSV = $csv")
+
try {
- val fileName = "sessions_${Date().shortDateTime()}"
- FileUtils.writeToFile(csv, fileName, requireContext())
- this.shareFile(fileName)
+ val fileName = "sessions_${Date().dateTimeFileFormatted}.csv"
+ FileUtils.writeFileToFilesDir(csv, fileName, requireContext())
+ this.shareFile(fileName, "Poker Analytics Export", "CSV Sessions")
} catch (e: IOException) {
Toast.makeText(requireContext(), "File write failed: ${e.message}", Toast.LENGTH_LONG).show()
}
}
- private fun shareFile(filePath: String) {
-
- val intentShareFile = Intent(Intent.ACTION_SEND)
- val fileWithinMyDir = File(filePath)
-
- if (fileWithinMyDir.exists()) {
- intentShareFile.type = "application/pdf"
- intentShareFile.putExtra(
- Intent.EXTRA_STREAM,
- Uri.parse("file://$filePath")
- )
- intentShareFile.putExtra(
- Intent.EXTRA_SUBJECT,
- "Sharing File..."
- )
- intentShareFile.putExtra(Intent.EXTRA_TEXT, "Sharing File...")
- startActivity(Intent.createChooser(intentShareFile, "Share File"))
+ private fun shareFile(filePath: String, subject: String, body: String) {
+
+ val intent = Intent(Intent.ACTION_SEND)
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
+
+ val sharedFile = File(requireContext().filesDir, filePath)
+
+ val uri = FileProvider.getUriForFile(requireContext(), "net.pokeranalytics.android.fileprovider", sharedFile)
+
+ if (sharedFile.exists()) {
+ intent.type = "application/csv"
+ intent.putExtra(Intent.EXTRA_STREAM, uri)
+ intent.putExtra(Intent.EXTRA_SUBJECT, subject)
+ intent.putExtra(Intent.EXTRA_TEXT, body)
+ startActivity(Intent.createChooser(intent, "Share File"))
+ } else {
+ Timber.d("File located at $filePath does not exists")
}
}
diff --git a/app/src/main/java/net/pokeranalytics/android/util/FileUtils.kt b/app/src/main/java/net/pokeranalytics/android/util/FileUtils.kt
index 22c20553..666bf06b 100644
--- a/app/src/main/java/net/pokeranalytics/android/util/FileUtils.kt
+++ b/app/src/main/java/net/pokeranalytics/android/util/FileUtils.kt
@@ -1,6 +1,10 @@
package net.pokeranalytics.android.util
import android.content.Context
+import timber.log.Timber
+import java.io.BufferedWriter
+import java.io.File
+import java.io.FileOutputStream
import java.io.OutputStreamWriter
class FileUtils {
@@ -11,11 +15,15 @@ class FileUtils {
* Writes a [string] into a file named [fileName], using a [context]
* Should be surrounded by a try/catch IOException
*/
- fun writeToFile(string: String, fileName: String, context: Context) {
+ fun writeFileToFilesDir(string: String, fileName: String, context: Context) {
- val outputStreamWriter = OutputStreamWriter(context.openFileOutput(fileName, Context.MODE_PRIVATE))
- outputStreamWriter.write(string)
- outputStreamWriter.close()
+ Timber.d("Writing to: $fileName ...\n$string")
+
+ val file = File(context.filesDir, fileName)
+
+ val fileOutputStream = FileOutputStream(file)
+ fileOutputStream.write(string.toByteArray())
+ fileOutputStream.close()
}
diff --git a/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt b/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt
index 2b7f5cf5..47b4716a 100644
--- a/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt
+++ b/app/src/main/java/net/pokeranalytics/android/util/extensions/DateExtension.kt
@@ -113,6 +113,12 @@ fun Date.getMonthAndYear(): String {
return SimpleDateFormat("MMMM yyyy", Locale.getDefault()).format(this).capitalize()
}
+// Returns a file friendly date time string
+val Date.dateTimeFileFormatted: String
+ get() {
+ return SimpleDateFormat("yy_MM_dd_hh_mm_ss", Locale.getDefault()).format(this)
+ }
+
// Return the netDuration between two dates
fun Date.getFormattedDuration(toDate: Date): String {
val difference = (toDate.time - this.time).toInt()
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 6997376d..b5fc0c48 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -176,7 +176,7 @@
Die eingegrenzte Suche ergab keine Ergebnisse
Bestätigung
Kontakt
- CSV (Importvorgang fehlgeschlagen)
+ CSV
One of the lines in your CSV file is not well formed. Please check your file or contact the support.
Währung
Aktueller Monat
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index b4d8dbba..8566c321 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -112,7 +112,7 @@
Los filtros aún no dieron ningún resultado.
Confirmación
Contáctanos
- CSV (no se puede importar)
+ CSV
Una de las líneas en tu archivo CSV no está bien formada. Verifica el archivo o contacta al soporte.
Divisa
Mes en curso
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 34703d39..14f8d682 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -180,7 +180,7 @@
Le filtre ne retourne aucun résultat
Confirmation
Contactez-nous
- CSV (ne peut être importé)
+ CSV
Une ligne de votre fichier CSV est mal formée. Veuillez vérifier votre fichier ou contacter le support.
Devise
Ce mois-ci
diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml
index 65ffdd86..6d5e34c2 100644
--- a/app/src/main/res/values-hi/strings.xml
+++ b/app/src/main/res/values-hi/strings.xml
@@ -112,7 +112,7 @@
फिल्टर से कोई परिणाम नहीं मिलेे
पुष्टीकरण
हमें संपर्क करें
- CSV (इम्पोर्ट नहीं किया जा सकता)
+ CSV
आपकी CSV फाइल में लाइनों से एक अच्छी तरह फार्मेट नहीं की गई है. कृपया अपनी फाइल जाँचे या सहायता टीम से संपर्क करें.
करेंसी
वर्तमान महीना
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index 4a7bcabd..054efd71 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -112,7 +112,7 @@
Il filtraggio non ha dato alcun risultato
Conferma
Contattaci
- CSV (non si può importare)
+ CSV
Una delle linee nel tuo file CSV non è ben formata. Controlla il tuo file o contatta l\'assistenza.
Valuta
Mese corrente
diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml
index 4a5de6ec..2bb60ca9 100644
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -112,7 +112,7 @@
フィルタリングでは結果が戻されませんでした
確認
ご連絡ください
- CSV (インポートできません)
+ CSV
CSV ファイルのいずれかの行が正しく形成されていません。ファイルをご確認いただくが、サポートまでお問い合わせください。
通貨
今月
diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml
index 75c8f211..8f6762a8 100644
--- a/app/src/main/res/values-pt/strings.xml
+++ b/app/src/main/res/values-pt/strings.xml
@@ -112,7 +112,7 @@
O filtro não apresentou nenhum resultado
Confirmação
Contate-nos
- CSV (Não pode ser importado)
+ CSV
Uma das linhas do seu arquivo CSV não está no formato correto. Por favor, verifique o seu arquivo ou contate o suporte.
Moeda
Mês atual
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 52562e59..f5e7392e 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -112,7 +112,7 @@
Не найдено результатов после фильтрации
Подтверждение
Напишите нам
- CSV (Импорт невозможен)
+ CSV
Одна из строк в вашем файле CSV отформатирована некорректно. Пожалуйста проверьте ваш файл или свяжитесь со службой поддержки.
Валюта
Текущий месяц
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index c3edfccd..c3f9cc97 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -98,7 +98,7 @@
比较
确认
联系我们
- CSV(无法导入)
+ CSV
CSV文件中的线之一不合适。请核查你的文件或联系支持团队。
货币
本月
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c0c1ccb0..f8699124 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -174,7 +174,7 @@
Filtering did not yield any results
Confirmation
Contact us
- CSV (Cannot be imported)
+ CSV
One of the lines in your CSV file is not well formed. Please check your file or contact the support.
Currency
Current month
diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml
index 43873cba..bfe997bf 100644
--- a/app/src/main/res/xml/provider_paths.xml
+++ b/app/src/main/res/xml/provider_paths.xml
@@ -1,11 +1,10 @@
-
-
+
+
+
+
+
\ No newline at end of file