浏览代码

fix: share file name display (#122)

Co-authored-by: Peter Cai <peter@typeblog.net>
Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/122
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 1 年之前
父节点
当前提交
43f247a71b
共有 1 个文件被更改,包括 9 次插入3 次删除
  1. 9 3
      app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt

+ 9 - 3
app-common/src/main/java/im/angry/openeuicc/util/UiUtils.kt

@@ -1,5 +1,6 @@
 package im.angry.openeuicc.util
 
+import android.content.ClipData
 import android.content.Context
 import android.content.Intent
 import android.content.res.Resources
@@ -81,6 +82,8 @@ fun <T : ActivityResultCaller> T.setupLogSaving(
     getLogFileName: () -> String,
     getLogText: () -> String
 ): () -> Unit {
+    var lastFileName = "untitled"
+
     val launchSaveIntent =
         registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri ->
             if (uri == null) return@registerForActivityResult
@@ -101,10 +104,12 @@ fun <T : ActivityResultCaller> T.setupLogSaving(
                 setMessage(R.string.logs_saved_message)
                 setNegativeButton(R.string.no) { _, _ -> }
                 setPositiveButton(R.string.yes) { _, _ ->
-                    val intent = Intent().apply {
-                        action = Intent.ACTION_SEND
+                    val intent = Intent(Intent.ACTION_SEND).apply {
                         type = "text/plain"
+                        clipData = ClipData.newUri(context.contentResolver, lastFileName, uri)
+                        putExtra(Intent.EXTRA_TITLE, lastFileName)
                         putExtra(Intent.EXTRA_STREAM, uri)
+                        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
                     }
 
                     context.startActivity(Intent.createChooser(intent, null))
@@ -113,6 +118,7 @@ fun <T : ActivityResultCaller> T.setupLogSaving(
         }
 
     return {
-        launchSaveIntent.launch(getLogFileName())
+        lastFileName = getLogFileName()
+        launchSaveIntent.launch(lastFileName)
     }
 }