cloudroam
2025-03-13 e9db61f701979a365a1002d46f1340d539fc2e20
add:设置中常用设置
已修改2个文件
已添加1个文件
91 ■■■■ 文件已修改
app/src/main/java/com/example/firstapp/database/response/DictResponse.kt 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/database/service/ApiService.kt 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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?
)
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实例(单例)
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()