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