From eb3994498700f8b210f47e9cc08b6f88a8d39526 Mon Sep 17 00:00:00 2001 From: septs Date: Thu, 12 Dec 2024 11:25:16 +0800 Subject: [PATCH 1/3] feat: share file after save logs --- .../java/im/angry/openeuicc/ui/LogsActivity.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt index 49bfa0f..b275242 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt @@ -10,6 +10,7 @@ import android.widget.TextView import androidx.activity.enableEdgeToEdge import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ShareCompat import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import im.angry.openeuicc.common.R @@ -26,6 +27,11 @@ class LogsActivity : AppCompatActivity() { private lateinit var logText: TextView private lateinit var logStr: String + private val fileName by lazy { + val now = SimpleDateFormat.getDateTimeInstance().format(Date()) + getString(R.string.logs_filename_template, now) + } + private val saveLogs = registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri -> if (uri == null) return@registerForActivityResult @@ -35,6 +41,11 @@ class LogsActivity : AppCompatActivity() { os.write(logStr.encodeToByteArray()) } } + ShareCompat.IntentBuilder(this) + .setType("image/plain") + .setChooserTitle(fileName) + .addStream(uri) + .startChooser() } override fun onCreate(savedInstanceState: Bundle?) { @@ -76,9 +87,7 @@ class LogsActivity : AppCompatActivity() { true } R.id.save -> { - saveLogs.launch(getString(R.string.logs_filename_template, - SimpleDateFormat.getDateTimeInstance().format(Date()) - )) + saveLogs.launch(fileName) true } else -> super.onOptionsItemSelected(item) -- 2.45.3 From 8eb68594d6f56bca84e3bad428959805f827c7eb Mon Sep 17 00:00:00 2001 From: septs Date: Fri, 13 Dec 2024 12:40:14 +0800 Subject: [PATCH 2/3] chore: accept reviews --- .../src/main/java/im/angry/openeuicc/ui/LogsActivity.kt | 9 ++++++++- app-common/src/main/res/menu/activity_logs.xml | 3 +++ app-common/src/main/res/values/strings.xml | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt index b275242..41ee411 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt @@ -26,6 +26,7 @@ class LogsActivity : AppCompatActivity() { private lateinit var scrollView: ScrollView private lateinit var logText: TextView private lateinit var logStr: String + private var sharable = false private val fileName by lazy { val now = SimpleDateFormat.getDateTimeInstance().format(Date()) @@ -41,7 +42,7 @@ class LogsActivity : AppCompatActivity() { os.write(logStr.encodeToByteArray()) } } - ShareCompat.IntentBuilder(this) + if (sharable) ShareCompat.IntentBuilder(this) .setType("image/plain") .setChooserTitle(fileName) .addStream(uri) @@ -87,6 +88,12 @@ class LogsActivity : AppCompatActivity() { true } R.id.save -> { + sharable = false + saveLogs.launch(fileName) + true + } + R.id.share -> { + sharable = true saveLogs.launch(fileName) true } diff --git a/app-common/src/main/res/menu/activity_logs.xml b/app-common/src/main/res/menu/activity_logs.xml index 4fa3aeb..7095be2 100644 --- a/app-common/src/main/res/menu/activity_logs.xml +++ b/app-common/src/main/res/menu/activity_logs.xml @@ -6,4 +6,7 @@ android:icon="@drawable/ic_save_as_black" android:title="@string/logs_save" app:showAsAction="always" /> + \ No newline at end of file diff --git a/app-common/src/main/res/values/strings.xml b/app-common/src/main/res/values/strings.xml index 61823f7..74f8679 100644 --- a/app-common/src/main/res/values/strings.xml +++ b/app-common/src/main/res/values/strings.xml @@ -132,6 +132,7 @@ No Save + Share Logs at %s You are %d steps away from being a developer. -- 2.45.3 From dd39d66404e036fc4dd04b60349d1fba64c00e52 Mon Sep 17 00:00:00 2001 From: septs Date: Fri, 13 Dec 2024 15:21:41 +0800 Subject: [PATCH 3/3] refactor --- .../im/angry/openeuicc/ui/LogsActivity.kt | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt index 41ee411..8dbaa91 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/LogsActivity.kt @@ -1,6 +1,7 @@ package im.angry.openeuicc.ui import android.icu.text.SimpleDateFormat +import android.net.Uri import android.os.Bundle import android.view.Menu import android.view.MenuItem @@ -8,6 +9,7 @@ import android.view.View import android.widget.ScrollView import android.widget.TextView import androidx.activity.enableEdgeToEdge +import androidx.activity.result.ActivityResultCallback import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ShareCompat @@ -21,34 +23,24 @@ import kotlinx.coroutines.withContext import java.io.FileOutputStream import java.util.Date -class LogsActivity : AppCompatActivity() { +class LogsActivity : AppCompatActivity(), ActivityResultCallback { private lateinit var swipeRefresh: SwipeRefreshLayout private lateinit var scrollView: ScrollView private lateinit var logText: TextView private lateinit var logStr: String private var sharable = false - private val fileName by lazy { - val now = SimpleDateFormat.getDateTimeInstance().format(Date()) - getString(R.string.logs_filename_template, now) - } - - private val saveLogs = - registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri -> - if (uri == null) return@registerForActivityResult - if (!this::logStr.isInitialized) return@registerForActivityResult - contentResolver.openFileDescriptor(uri, "w")?.use { - FileOutputStream(it.fileDescriptor).use { os -> - os.write(logStr.encodeToByteArray()) - } - } - if (sharable) ShareCompat.IntentBuilder(this) - .setType("image/plain") - .setChooserTitle(fileName) - .addStream(uri) - .startChooser() + private val fileName: String + get() { + val time = SimpleDateFormat.getDateTimeInstance().format(Date()) + return getString(R.string.logs_filename_template, time) } + private val saveLogs = registerForActivityResult( + ActivityResultContracts.CreateDocument("text/plain"), + this, + ) + override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) @@ -116,4 +108,20 @@ class LogsActivity : AppCompatActivity() { scrollView.fullScroll(View.FOCUS_DOWN) } } + + @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") + override fun onActivityResult(uri: Uri?) { + if (uri == null) return + if (!this::logStr.isInitialized) return + contentResolver.openFileDescriptor(uri, "w")?.use { + val fd = FileOutputStream(it.fileDescriptor) + fd.write(logStr.encodeToByteArray()) + fd.close() + } + if (sharable) ShareCompat.IntentBuilder(this) + .setType("image/plain") + .setChooserTitle(fileName) + .addStream(uri) + .startChooser() + } } \ No newline at end of file -- 2.45.3