添加clientid和content-languag

This commit is contained in:
2026-05-15 16:57:48 +08:00
parent da935a122f
commit dc73d5df64
9 changed files with 79 additions and 12 deletions

View File

@@ -2,14 +2,25 @@ package com.example.defenseapplication
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import bean.LoginBean
import com.blankj.utilcode.util.Utils import com.blankj.utilcode.util.Utils
import com.example.defenseapplication.bean.BaseInfo
import com.example.defenseapplication.utils.ApiConfig
import com.example.defenseapplication.utils.LanguageUtil import com.example.defenseapplication.utils.LanguageUtil
import com.example.defenseapplication.utils.UserinfoUtil
import com.google.gson.Gson
class MyApplication : Application() { class MyApplication : Application() {
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
Utils.init(this) // 初始化 AndroidUtilCode Utils.init(this) // 初始化 AndroidUtilCode
var token = UserinfoUtil.getUserInfo()?.access_token;
if (token != null) {
ApiConfig.authToken = token
};
LanguageHeaderManager.init(this)
} }
override fun attachBaseContext(base: Context) { override fun attachBaseContext(base: Context) {

View File

@@ -1,12 +1,13 @@
package bean package bean
data class LoginBean( data class LoginBean(
val headPic: String, val access_token: String,
val nickName: String, val client_id: String,
val sex: Int, val expire_in: Int,
val signature: String, val openid: Any,
val token: String, val refresh_expire_in: Any,
val userId: Int val refresh_token: Any,
val role: String,
val scope: Any
) )
data class LoginRequest( data class LoginRequest(
val clientId: String = "428a8310cd442757ae699df5d894f051", val clientId: String = "428a8310cd442757ae699df5d894f051",
@@ -34,4 +35,9 @@ data class ForgotRequest(
val phonenumber: String, val phonenumber: String,
val smsCode: String, val smsCode: String,
val password: String val password: String
)
data class LoginResponse(
val clientid: String,
val content_language: String,
) )

View File

@@ -14,6 +14,8 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import bean.LoginRequest
import bean.LoginResponse
import com.example.defenseapplication.R import com.example.defenseapplication.R
import com.example.defenseapplication.adapter.DeviceAdapter import com.example.defenseapplication.adapter.DeviceAdapter
import com.example.defenseapplication.adapter.DeviceUi import com.example.defenseapplication.adapter.DeviceUi
@@ -108,6 +110,11 @@ class HomeMenuFragment : Fragment() {
private fun fetchFamilyList() { private fun fetchFamilyList() {
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
try { try {
val loginRequest = LoginResponse(
clientid = "428a8310cd442757ae699df5d894f051",
content_language = "en_US",
)
val response = RetrofitNetwork.getNetworkService().getFamilyList() val response = RetrofitNetwork.getNetworkService().getFamilyList()
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
if (response.code == 200 && response.data != null) { if (response.code == 200 && response.data != null) {

View File

@@ -22,7 +22,7 @@ object ApiConfig {
private const val TAG = "ApiConfig" private const val TAG = "ApiConfig"
private val gson = Gson() private val gson = Gson()
@Volatile @Volatile
private var authToken: String = "" public var authToken: String = ""
fun updateAuthToken(token: String) { fun updateAuthToken(token: String) {
authToken = token authToken = token
@@ -162,9 +162,12 @@ object ApiConfig {
fun createHeadersInterceptor() = Interceptor { chain -> fun createHeadersInterceptor() = Interceptor { chain ->
val requestBuilder = chain.request().newBuilder() val requestBuilder = chain.request().newBuilder()
val token = authToken val token = authToken
val langHeader = LanguageHeaderManager.getLanguageHeaderValue()
if (token.isNotBlank()) { if (token.isNotBlank()) {
Log.d("ApiConfig", buildAuthorizationValue(token))
requestBuilder.header("Authorization", buildAuthorizationValue(token)) requestBuilder.header("Authorization", buildAuthorizationValue(token))
requestBuilder.header("clientid", "428a8310cd442757ae699df5d894f051")
requestBuilder.header("content-language", langHeader)
} }
requestBuilder requestBuilder

View File

@@ -38,7 +38,7 @@ interface ApiService {
suspend fun forgotPassword(@Body forgotRequest: ForgotRequest): GetCodeBean<Any> suspend fun forgotPassword(@Body forgotRequest: ForgotRequest): GetCodeBean<Any>
/** /**
* 获取我所在家庭列表 * 获取家庭列表
*/ */
@GET("/app/selectFamily") @GET("/app/selectFamily")
suspend fun getFamilyList(): GetCodeBean<List<FamilyBean>> suspend fun getFamilyList(): GetCodeBean<List<FamilyBean>>

View File

@@ -0,0 +1,35 @@
import android.content.Context
import androidx.core.content.edit
enum class AppLanguage(val code: String) {
ENGLISH("en_US"),
SIMPLIFIED_CHINESE("zh_CN"),
TRADITIONAL_CHINESE("zh_TW")
}
//语言枚举与管理器
object LanguageHeaderManager {
private const val PREF_NAME = "app_lang_pref"
private const val KEY_LANGUAGE = "selected_language"
private var currentLanguage: AppLanguage = AppLanguage.ENGLISH
fun init(context: Context) {
val prefs = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE)
val langCode = prefs.getString(KEY_LANGUAGE, AppLanguage.ENGLISH.code)
currentLanguage = AppLanguage.values().find { it.code == langCode } ?: AppLanguage.ENGLISH
}
fun getCurrentLanguage(): AppLanguage = currentLanguage
fun switchLanguage(context: Context, language: AppLanguage) {
currentLanguage = language
// 持久化
context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE).edit {
putString(KEY_LANGUAGE, language.code)
apply()
}
// 可选:更新应用 Locale、重启 Activity 等
}
fun getLanguageHeaderValue(): String = currentLanguage.code
}

View File

@@ -12,6 +12,7 @@ object UserinfoUtil {
fun saveUserInfo(userinfo: LoginBean?) { fun saveUserInfo(userinfo: LoginBean?) {
userinfo ?: return userinfo ?: return
ApiConfig.updateAuthToken(userinfo.access_token);
val json = gson.toJson(userinfo) val json = gson.toJson(userinfo)
SPUtils.getInstance().put(KEY_USER, json) SPUtils.getInstance().put(KEY_USER, json)
} }

View File

@@ -51,6 +51,11 @@
android:src="@drawable/triangle" /> android:src="@drawable/triangle" />
</LinearLayout> </LinearLayout>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@@ -138,7 +143,6 @@
android:clipToPadding="false" android:clipToPadding="false"
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
android:paddingBottom="16dp" android:paddingBottom="16dp"
tools:itemCount="3"
tools:listitem="@layout/item_device" /> tools:listitem="@layout/item_device" />
</LinearLayout> </LinearLayout>
@@ -168,7 +172,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:nestedScrollingEnabled="false" android:nestedScrollingEnabled="false"
tools:itemCount="3"
tools:listitem="@layout/item_family" /> tools:listitem="@layout/item_family" />
</LinearLayout> </LinearLayout>

View File

@@ -8,4 +8,5 @@
android:paddingHorizontal="14dp" android:paddingHorizontal="14dp"
android:paddingVertical="12dp" android:paddingVertical="12dp"
android:textColor="@color/black" android:textColor="@color/black"
android:text="张三"
android:textSize="16sp" /> android:textSize="16sp" />