18034727885
2026-07-09 c26d344da4c54ad8456a2dc145cde0b424722f0e
修复初始语言非法语的问题
12个文件已修改
216 ■■■■■ 已修改文件
app/src/main/java/com/driver/igotrip/base/MyApplication.kt 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/base/local/BaseLoginActivity.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/bean/websocket/HeartBean.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/mine/SafeVerifyActivity.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/mine/SettingLoginPwdActivity.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/mine/setting/LanghActivity.kt 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/pub/ForgetPwdActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/pub/LoginActivity.kt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/utils/LanguageManager.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/utils/LanguageSP.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/base/MyApplication.kt
@@ -10,7 +10,6 @@
import android.app.Application
import android.content.Intent
import android.os.*
import android.text.TextUtils
import android.util.Log
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
@@ -18,7 +17,6 @@
import cn.sinata.rxnetty.LogHelper.logRecord
import cn.sinata.rxnetty.NettyClient
import cn.sinata.xldutils.BaseApplication
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.sysErr
import com.driver.igotrip.R
import com.driver.igotrip.bean.OrderBean
@@ -31,7 +29,6 @@
import com.driver.igotrip.utils.AudioRecoderUtils
import com.driver.igotrip.utils.Cache.CacheKey
import com.driver.igotrip.utils.Cache.CacheUtil
import com.driver.igotrip.utils.LanguageSP
import com.driver.igotrip.utils.LogUtils
import com.google.android.gms.maps.model.LatLng
import com.google.cloud.texttospeech.v1.*
@@ -71,7 +68,6 @@
        appContext = this
//        Places.initialize(applicationContext, Const.google_key)
//        handleSSLHandshake()
        setDefaultLanguage()
        //如果是主进程
        XUI.init(this)
//        UMConfigure.init(
@@ -91,21 +87,6 @@
//        JPushInterface.setDebugMode(true)
//        JPushInterface.init(this)
        setAlisa()
    }
    //设置默认语言
    private fun setDefaultLanguage() {
        val language = SPUtils.getString(Const.language)
        if (TextUtils.isEmpty(language)) {
            SPUtils.save(Const.language, Const.Language.DEFAULT_LANGUAGE)
            val appLa = when (Const.Language.DEFAULT_LANGUAGE) {
                Const.Language.FRENCH -> LanguageSP.LanguageConst.FR_FR
                Const.Language.CHINESE -> LanguageSP.LanguageConst.ZH_CN
                else -> LanguageSP.LanguageConst.EN_US
            }
            // 保存新语言到 SP
            LanguageSP.saveLanguage(this, appLa)
        }
    }
    public fun setAlisa() {
app/src/main/java/com/driver/igotrip/base/local/BaseLoginActivity.kt
@@ -1,4 +1,4 @@
package com.driver.emanagercar.ui.base.Local
package com.driver.igotrip.base.local
import android.annotation.SuppressLint
import android.os.Bundle
@@ -28,7 +28,6 @@
import io.reactivex.schedulers.Schedulers
import org.greenrobot.eventbus.EventBus
import org.jetbrains.anko.find
import org.w3c.dom.Text
import java.util.concurrent.TimeUnit
abstract class BaseLoginActivity : MyBaseActivity() {
app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
@@ -25,7 +25,6 @@
import androidx.activity.ComponentActivity
import androidx.loader.content.CursorLoader
import cn.sinata.xldutils.utils.sysErr
import com.driver.emanagercar.ui.base.Local.BaseLoginActivity
import com.driver.igotrip.R
import com.driver.igotrip.bean.StringBean
import com.driver.igotrip.netUtls.Api
app/src/main/java/com/driver/igotrip/bean/websocket/HeartBean.java
@@ -1,11 +1,9 @@
package com.driver.igotrip.bean.websocket;
import com.driver.igotrip.BuildConfig;
import com.driver.igotrip.base.Const;
import com.driver.igotrip.netUtls.HttpManager;
import com.driver.igotrip.netUtls.NetKitKt;
import com.driver.igotrip.utils.Cache.CacheKey;
import cn.sinata.xldutils.utils.SPUtils;
public class HeartBean {
    private int code = 200;
@@ -45,7 +43,7 @@
        this.data = data;
    }
    public static class DataBean{
    public static class DataBean {
        private int type = 2;
        private int language = 2;
        private int userId = NetKitKt.getUserId();
@@ -55,26 +53,11 @@
        public DataBean() {
            type = 2;
            language = getTypeByLanguage();
            userId =  NetKitKt.getUserId();
            language = HttpManager.getTypeByLanguage();
            userId = NetKitKt.getUserId();
            token = CacheKey.INSTANCE.getToken();
            device = "phoneDevice";
            version = BuildConfig.VERSION_NAME;
        }
    }
    public static int getTypeByLanguage() {
        String lang = SPUtils.getString(Const.language);
        int type = 0;
        if (lang == null || lang.isEmpty() || lang.equals(Const.Language.ENGLISH)){
            type = 2;
        }
        else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")){
            type = 1;
        }
        else if (lang.equals(Const.Language.FRENCH)){
            type = 3;
        }
        return type;
    }
}
app/src/main/java/com/driver/igotrip/netUtls/HttpManager.java
@@ -1,6 +1,8 @@
package com.driver.igotrip.netUtls;
import static com.driver.igotrip.netUtls.NetKitKt.getToken;
import android.util.Log;
import com.driver.igotrip.BuildConfig;
@@ -38,8 +40,6 @@
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import static com.driver.igotrip.netUtls.NetKitKt.getToken;
/**
 * 网络请求管理类
@@ -70,7 +70,7 @@
        map = new HashMap<>();
        // 传参方式为json
//        headerParams.put("Content-Type", "application/json");
        headerParams.put("Authorization", "Bearer "+getToken());
        headerParams.put("Authorization", "Bearer " + getToken());
    }
    public HashMap<String, Object> getMap() {
@@ -106,8 +106,8 @@
        // 监听请求条件
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.connectTimeout(3, TimeUnit.MINUTES);
        builder.readTimeout(3,TimeUnit.MINUTES);
        builder.writeTimeout(3,TimeUnit.MINUTES);
        builder.readTimeout(3, TimeUnit.MINUTES);
        builder.writeTimeout(3, TimeUnit.MINUTES);
//        builder.addInterceptor(new Interceptor() {
//            @Override
//            public Response intercept(Chain chain) throws IOException {
@@ -154,12 +154,12 @@
     * @param observer observer
     */
    //                                         public <T extends BaseBean> void get(final String action,
    public  void get(final String action, Map<String, String> params, Observer<ResponseBody> observer) {
    public void get(final String action, Map<String, String> params, Observer<ResponseBody> observer) {
        if (params == null) {
            params = new HashMap<>();
        }
        int type = getTypeByLanguage();
        params.put(Const.language,type+""); // 1 中文 2 英文 3 法文
        params.put(Const.language, type + ""); // 1 中文 2 英文 3 法文
        if (gson == null) {
            gson = new Gson();
        }
@@ -178,14 +178,12 @@
    public static int getTypeByLanguage() {
        String lang = SPUtils.getString(Const.language, Const.Language.DEFAULT_LANGUAGE);
        int type = 0;
        if (lang == null || lang.isEmpty() || lang.equals(Const.Language.ENGLISH)){
            type = 2;
        }
        else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")){
            type = 1;
        }
        else if (lang.equals(Const.Language.FRENCH)){
        if (lang == null || lang.isEmpty() || lang.equals(Const.Language.FRENCH)) {
            type = 3;
        } else if (lang.equals(Const.Language.CHINESE) || lang.equals("zh")) {
            type = 1;
        } else if (lang.equals(Const.Language.ENGLISH)) {
            type = 2;
        }
        return type;
    }
@@ -198,22 +196,22 @@
     */
//    public <T extends BaseBean> void post(final String action, Map<String, Object> params,
    public void post(final String action, Map<String, Object> params,
                                          Observer<ResponseBody> observer) {
                     Observer<ResponseBody> observer) {
        if (params == null) {
            params = new HashMap<>();
        }
        int type = getTypeByLanguage();
        params.put(Const.language,type); // 1 中文 2 英文 3 法文
        params.put(Const.language, type); // 1 中文 2 英文 3 法文
        StringBuilder pwd = new StringBuilder();
        pwd.append(action);
        if (params.size() != 0){
        if (params.size() != 0) {
            pwd.append("?");
        }
        Iterator<Map.Entry<String,Object>> iterator = params.entrySet().iterator();
        while (iterator.hasNext()){
        Iterator<Map.Entry<String, Object>> iterator = params.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Object> entry = iterator.next();
            pwd.append(entry.getKey()).append("=").append(entry.getValue());
            if (iterator.hasNext()){
            if (iterator.hasNext()) {
                pwd.append("&");
            }
        }
@@ -221,7 +219,7 @@
        Map<String, Object> par = new HashMap<>();
        ApiServics jsonService = initBaseData(action).create(ApiServics.class);
        LogUtils.d("post", params.toString());
        jsonService.postResult(action,headerParams, params)
        jsonService.postResult(action, headerParams, params)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(observer);
@@ -229,10 +227,11 @@
    /**
     * 将map数据转换为 普通的 json RequestBody
     *
     * @param map 以前的请求参数
     * @return
     */
    public static RequestBody convertMapToBody(Map<?,?> map) {
    public static RequestBody convertMapToBody(Map<?, ?> map) {
        return RequestBody.create(MediaType.parse("application/json; charset=utf-8"), new JSONObject(map).toString());
    }
app/src/main/java/com/driver/igotrip/ui/mine/SafeVerifyActivity.kt
@@ -7,7 +7,7 @@
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.getContent
import com.driver.emanagercar.ui.base.Local.BaseLoginActivity
import com.driver.igotrip.base.local.BaseLoginActivity
import com.driver.igotrip.R
import com.driver.igotrip.base.BaseEvent
import com.driver.igotrip.base.Const
@@ -15,7 +15,6 @@
import com.driver.igotrip.netUtls.callNet
import com.driver.igotrip.netUtls.getMapByAny
import com.driver.igotrip.utils.Cache.CacheKey
import com.google.recaptcha.sample.RecaptchaVisual
import com.google.recaptcha.sample.RecaptchaVisualException
import com.lljjcoder.style.citylist.Toast.ToastUtils
import kotlinx.coroutines.launch
app/src/main/java/com/driver/igotrip/ui/mine/SettingLoginPwdActivity.kt
@@ -1,12 +1,11 @@
package com.driver.igotrip.ui.mine
import android.view.View
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.getContent
import com.driver.emanagercar.ui.base.Local.BaseLoginActivity
import com.driver.igotrip.base.local.BaseLoginActivity
import com.driver.igotrip.R
import com.driver.igotrip.base.BaseEvent
import com.driver.igotrip.netUtls.Api
app/src/main/java/com/driver/igotrip/ui/mine/setting/LanghActivity.kt
@@ -1,8 +1,6 @@
package com.driver.igotrip.ui.mine.setting
import android.util.Log
import android.widget.TextView
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.setDrawableNull
import cn.sinata.xldutils.utils.setDrawableRight
@@ -13,8 +11,6 @@
import com.driver.igotrip.netUtls.callNet
import com.driver.igotrip.netUtls.getMapByAny
import com.driver.igotrip.ui.DialogUtil
import com.driver.igotrip.ui.pub.StartActivity
import com.driver.igotrip.utils.LanguageManager
import com.driver.igotrip.utils.LanguageSP
import com.driver.igotrip.utils.LanguageSP.LanguageConst
import com.driver.igotrip.utils.LanguageSP.LanguageConst.EN_US
@@ -43,16 +39,8 @@
    override fun setOnclick() {
        tv_china.clickDelay {
            DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) {
                /*  SPUtils.save(Const.language,Const.Language.CHINESE)
                  changeServerLanguage()
                  LanguageUtil.changeAppLanguage(this,Const.Language.CHINESE,"")*/
                SPUtils.save(Const.language, Const.Language.CHINESE)
                LanguageManager.switchLanguage(
                    this,
                    LanguageConst.ZH_CN,
                    StartActivity::class.java
                )
                // 保存新语言到 SP
                LanguageSP.saveLanguage(this, LanguageConst.ZH_CN)
                changeServerLanguage {
                    LanguageUtil.reApp(this)
                }
@@ -62,16 +50,7 @@
        tv_en.clickDelay {
            DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) {
                /*  SPUtils.save(Const.language,Const.Language.ENGLISH)
                  changeServerLanguage()
                  LanguageUtil.changeAppLanguage(this,Const.Language.ENGLISH,"")
                  LanguageUtil.reApp(this)*/
                SPUtils.save(Const.language, Const.Language.ENGLISH)
                LanguageManager.switchLanguage(
                    this,
                    LanguageConst.EN_US,
                    StartActivity::class.java
                )
                LanguageSP.saveLanguage(this, LanguageConst.EN_US)
                changeServerLanguage {
                    LanguageUtil.reApp(this)
                }
@@ -80,16 +59,7 @@
        tv_fr.clickDelay {
            DialogUtil.getDelAndSureDialog(this, getString(R.string.确定切换语言吗), {}) {
                /* SPUtils.save(Const.language,Const.Language.FRENCH)
                 changeServerLanguage()
                 LanguageUtil.changeAppLanguage(this,Const.Language.FRENCH,"")
                 LanguageUtil.reApp(this)*/
                SPUtils.save(Const.language, Const.Language.FRENCH)
                LanguageManager.switchLanguage(
                    this,
                    LanguageConst.FR_FR,
                    StartActivity::class.java
                )
                LanguageSP.saveLanguage(this, LanguageConst.FR_FR)
                changeServerLanguage {
                    LanguageUtil.reApp(this)
                }
app/src/main/java/com/driver/igotrip/ui/pub/ForgetPwdActivity.kt
@@ -8,10 +8,8 @@
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.getAreaCode
import cn.sinata.xldutils.utils.getString
import com.driver.emanagercar.ui.base.Local.BaseLoginActivity
import com.driver.igotrip.base.local.BaseLoginActivity
import com.driver.igotrip.R
import com.driver.igotrip.base.MyApplication
import com.driver.igotrip.base.gaode.AMapKit
import com.driver.igotrip.bean.QueryPhoneBean
import com.driver.igotrip.netUtls.Api
import com.driver.igotrip.netUtls.callNet
app/src/main/java/com/driver/igotrip/ui/pub/LoginActivity.kt
@@ -3,30 +3,24 @@
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.util.Log
import android.view.Gravity
import android.view.View
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.clickDelay
import cn.sinata.xldutils.utils.getAreaCode
import cn.sinata.xldutils.utils.getString
import com.driver.emanagercar.ui.base.Local.BaseLoginActivity
import com.driver.igotrip.base.local.BaseLoginActivity
import com.driver.igotrip.R
import com.driver.igotrip.base.MyApplication
import com.driver.igotrip.base.gaode.AMapKit
import com.driver.igotrip.bean.AgreeBean
import com.driver.igotrip.bean.LoginBean
import com.driver.igotrip.netUtls.Api
import com.driver.igotrip.netUtls.callNet
import com.driver.igotrip.netUtls.getMapByAny
import com.driver.igotrip.ui.main.GetOrderFragment
import com.driver.igotrip.ui.main.MainActivity
import com.driver.igotrip.utils.Cache.CacheKey
import com.driver.igotrip.utils.LanguageUtil
import com.driver.igotrip.utils.PhoneCheckUtil
import com.lzf.easyfloat.EasyFloat
import com.lzf.easyfloat.enums.ShowPattern
@@ -37,7 +31,6 @@
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.startActivityForResult
import org.jetbrains.anko.toast
import java.util.*
class LoginActivity : BaseLoginActivity() {
    override fun setContentView() {
app/src/main/java/com/driver/igotrip/utils/LanguageManager.java
@@ -1,8 +1,6 @@
package com.driver.igotrip.utils;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.LocaleList;
@@ -19,7 +17,7 @@
     */
    public static Context wrapContext(Context context) {
        String language = LanguageSP.getLanguage(context);
        Log.e( "语言: ",language );
        Log.e("语言: ", language);
        // 否则根据保存的语言配置 Context
        return updateContextLocale(context, language);
    }
@@ -53,7 +51,7 @@
     */
    private static Locale getLocaleFromLanguage(String language) {
        if (TextUtils.isEmpty(language)) {
            return Locale.getDefault();
            return Locale.FRENCH;
        }
        String[] parts = language.split("-");
        if (parts.length == 1) {
@@ -61,35 +59,5 @@
        } else {
            return new Locale(parts[0], parts[1]); // 如 "zh-CN" -> Locale("zh", "CN")
        }
    }
    /**
     * 切换语言并重启应用(确保所有页面生效)
     * @param context 上下文
     * @param newLanguage 新语言(如 LanguageConst.ZH_CN)
     * @param launcherActivityClass 应用的启动页 Activity
     */
    public static void switchLanguage(Context context, String newLanguage, Class<?> launcherActivityClass) {
        // 保存新语言到 SP
        LanguageSP.saveLanguage(context, newLanguage);
        // 重启应用(清除旧栈,启动新栈)
       // restartApp(context, launcherActivityClass);
    }
    /**
     * 重启应用(无缝切换)
     */
    private static void restartApp(Context context, Class<?> launcherActivityClass) {
        Intent intent = new Intent(context, launcherActivityClass);
        // 清除所有旧 Activity,创建新任务栈
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        context.startActivity(intent);
        // 关闭当前页面(如果是 Activity 调用)
        if (context instanceof Activity) {
            ((Activity) context).overridePendingTransition(0, 0); // 无动画,避免闪屏
            ((Activity) context).finish();
        }
        // 杀死旧进程(确保资源重新加载)
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}
app/src/main/java/com/driver/igotrip/utils/LanguageSP.java
@@ -3,12 +3,28 @@
import android.content.Context;
import android.content.SharedPreferences;
import com.driver.igotrip.base.Const;
import cn.sinata.xldutils.utils.SPUtils;
public class LanguageSP {
    private static final String SP_NAME = "app_language";
    private static final String KEY_LANGUAGE = "current_language";
    // 保存当前选择的语言
    public static void saveLanguage(Context context, String language) {
        String l = Const.Language.DEFAULT_LANGUAGE;
        switch (language) {
            case LanguageConst.EN_US:
                l = Const.Language.ENGLISH;
                break;
            case LanguageConst.ZH_CN:
                l = Const.Language.CHINESE;
                break;
            default:
                break;
        }
        SPUtils.save(Const.language, l);
        SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
        sp.edit().putString(KEY_LANGUAGE, language).apply();
    }
@@ -16,10 +32,22 @@
    // 获取保存的语言(默认英文)
    public static String getLanguage(Context context) {
        SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
        return sp.getString(KEY_LANGUAGE, LanguageConst.EN_US);
        String language = SPUtils.getString(Const.language, Const.Language.DEFAULT_LANGUAGE);
        String l = LanguageConst.FR_FR;
        switch (language) {
            case Const.Language.ENGLISH:
                l = LanguageConst.EN_US;
                break;
            case Const.Language.CHINESE:
                l = LanguageConst.ZH_CN;
                break;
            default:
                break;
        }
        return sp.getString(KEY_LANGUAGE, l);
    }
    public static  class LanguageConst {
    public static class LanguageConst {
        // 中文(简体)
        public static final String ZH_CN = "zh-CN";
        // 英文(美国)