From e9db61f701979a365a1002d46f1340d539fc2e20 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 13 三月 2025 13:55:58 +0800 Subject: [PATCH] add:设置中常用设置 --- app/src/main/java/com/example/firstapp/database/response/DictResponse.kt | 21 ++++++++++ app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt | 66 +++++++++++++++++++++++++++------ app/src/main/java/com/example/firstapp/database/service/ApiService.kt | 4 ++ 3 files changed, 79 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/database/response/DictResponse.kt b/app/src/main/java/com/example/firstapp/database/response/DictResponse.kt new file mode 100644 index 0000000..7b54ff2 --- /dev/null +++ b/app/src/main/java/com/example/firstapp/database/response/DictResponse.kt @@ -0,0 +1,21 @@ +package com.example.firstapp.database.response + +data class DictResponse( + val code: Int, + val msg: String, + val data: DictData? +) + +data class DictData( + val id: Long, + val dictId: Long, + val itemText: String, + val itemValue: String?, + val description: String?, + val sortOrder: Int, + val status: Int, + val createTime: String, + val updateTime: String, + val creator: String?, + val updater: String? +) \ No newline at end of file diff --git a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt index 8ee56c7..f88e5ec 100644 --- a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt +++ b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt @@ -3,6 +3,7 @@ import com.example.firstapp.database.entity.ApiResponse import com.example.firstapp.database.entity.KeywordConfig import com.example.firstapp.database.response.ContentResponse +import com.example.firstapp.database.response.DictResponse import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import retrofit2.http.GET @@ -18,6 +19,9 @@ @GET("cloudContent/getByType") suspend fun getContentByType(@Query("type") type: String): ContentResponse + + @GET("sysDict/getByDictCodeAndItemText") + suspend fun getDictValue(@Query("dictCode") dictCode: String, @Query("itemText") itemText: String): DictResponse } // 创建Retrofit实例(单例) diff --git a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt index 66b1abe..455a039 100644 --- a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt +++ b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt @@ -12,13 +12,16 @@ import android.widget.EditText import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.example.firstapp.R import com.example.firstapp.activity.ContentDetailActivity +import com.example.firstapp.database.service.RetrofitClient import com.example.firstapp.databinding.FragmentNotificationsBinding import com.example.firstapp.ui.reminderOther.ReminderOtherAddActivity2 import com.example.firstapp.ui.reminderOther.ReminderSettingsFragmentOther +import kotlinx.coroutines.launch class NotificationsFragment : Fragment() { @@ -28,6 +31,16 @@ // onDestroyView. private val binding get() = _binding!! + // 默认值 + private val DEFAULT_XIAOHONGSHU_URL = "https://www.xiaohongshu.com/user/profile/64978d5c000000001001ee26" + private val DEFAULT_EMAIL = "support@example.com" + private val DEFAULT_SHARE_TEXT = "推荐一个很棒的应用给你!\n下载地址:https://oia.xiaohongshu.com/oia" + + // 存储从接口获取的值 + private var xiaohongshuUrl = "" + private var contactEmail = "" + private var shareText = "" + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -35,9 +48,46 @@ ): View { _binding = FragmentNotificationsBinding.inflate(inflater, container, false) - setupClickListeners() + // 先加载配置,再设置点击事件 + lifecycleScope.launch { + loadConfigurations() + setupClickListeners() + } return binding.root + } + + private suspend fun loadConfigurations() { + try { + // 获取小红书链接 + val xhsResponse = RetrofitClient.apiService.getDictValue("setting", "xiaohongshu") + if (xhsResponse.code == 200 && !xhsResponse.data?.itemValue.isNullOrEmpty()) { + xiaohongshuUrl = xhsResponse.data?.itemValue ?: DEFAULT_XIAOHONGSHU_URL + } else { + xiaohongshuUrl = DEFAULT_XIAOHONGSHU_URL + } + + // 获取邮箱 + val emailResponse = RetrofitClient.apiService.getDictValue("setting", "email") + if (emailResponse.code == 200 && !emailResponse.data?.itemValue.isNullOrEmpty()) { + contactEmail = emailResponse.data?.itemValue ?: DEFAULT_EMAIL + } else { + contactEmail = DEFAULT_EMAIL + } + + // 获取分享文本 + val shareResponse = RetrofitClient.apiService.getDictValue("setting", "share_link") + if (shareResponse.code == 200 && !shareResponse.data?.itemValue.isNullOrEmpty()) { + shareText = shareResponse.data?.itemValue ?: DEFAULT_SHARE_TEXT + } else { + shareText = DEFAULT_SHARE_TEXT + } + } catch (e: Exception) { + // 如果发生错误,使用默认值 + xiaohongshuUrl = DEFAULT_XIAOHONGSHU_URL + contactEmail = DEFAULT_EMAIL + shareText = DEFAULT_SHARE_TEXT + } } private fun setupClickListeners() { @@ -58,7 +108,7 @@ // 关于小红书 binding.aboutApp.setOnClickListener { // 跳转到小红书账号页面 - val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.xiaohongshu.com/user/profile/64978d5c000000001001ee26")) + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(xiaohongshuUrl)) startActivity(intent) } @@ -89,13 +139,12 @@ } private fun showEmailDialog() { - val email = "support@example.com" MaterialAlertDialogBuilder(requireContext()) .setTitle("联系邮箱") - .setMessage(email) + .setMessage(contactEmail) .setPositiveButton("复制") { _, _ -> val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText("email", email) + val clip = ClipData.newPlainText("email", contactEmail) clipboard.setPrimaryClip(clip) Toast.makeText(context, "邮箱已复制", Toast.LENGTH_SHORT).show() } @@ -126,9 +175,6 @@ // 获取应用程序的包名 //val packageName = requireContext().packageName - // 创建分享文本 - val shareText = "推荐一个很棒的应用给你!\n" + "下载地址:https://oia.xiaohongshu.com/oia" - // 创建分享意图 val intent = Intent().apply { action = Intent.ACTION_SEND @@ -138,10 +184,6 @@ // 指定分享到微信 setPackage("com.tencent.mm") } -// intent.setPackage("com.tencent.mm") -// intent.action = Intent.ACTION_SEND -// intent.type = "text/plain" -// intent.putExtra(Intent.EXTRA_TEXT, "推荐一个很棒的应用给你!") startActivity(Intent.createChooser(intent, "分享到微信")) } catch (e: Exception) { Toast.makeText(context, "请先安装微信", Toast.LENGTH_SHORT).show() -- Gitblit v1.9.3