18034727885
2026-05-08 0cd2089f05a87e9a2155d169c1c3f654e17ef396
修复问题
10个文件已修改
94 ■■■■■ 已修改文件
app/build.gradle 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/Functions.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/entity/CommonData.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/MainActivity.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/SettingActivity.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/utils/Const.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -87,7 +87,7 @@
                            def timestamp = new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+08"))
                            // 构建新的文件名
                            def newName = file.name.replace("app-${variantName}", "GoPost_user-${variant.versionName}-${timestamp}")
                            def newName = file.name.replace("app-${variantName}", "GoPost_user-${variant.versionName}-${variant.buildType.name}-${timestamp}")
                            // 重命名文件
                            def newFile = new File(file.parentFile, newName)
@@ -118,7 +118,7 @@
                            def timestamp = new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("GMT+08"))
                            // 构建新的文件名
                            def newName = file.name.replace("app-${variantName}", "GoPost_user-${variant.versionName}-${timestamp}")
                            def newName = file.name.replace("app-${variantName}", "GoPost_user-${variant.versionName}-${variant.buildType.name}-${timestamp}")
                            // 重命名文件
                            def newFile = new File(file.parentFile, newName)
app/src/main/java/com/igo/user/network/Functions.kt
@@ -1,5 +1,6 @@
package com.igo.user.network
import android.util.Log
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.data.ResultData
import cn.sinata.xldutils.defaultScheduler
@@ -66,7 +67,9 @@
    showDialog: Boolean = false,
    crossinline success: (msg: String?, t: O?) -> Unit
) {
    request(activity, showToast, showDialog, success) { _, _ -> }
    request(activity, showToast, showDialog, success) {code: Int, msg: String ->
        Log.e("xxxx","code:${code},msg:${msg}")
    }
}
inline fun <reified O, I : ResultData<O>> Flowable<I>.requestByF(
app/src/main/java/com/igo/user/network/entity/CommonData.kt
@@ -185,7 +185,10 @@
data class VersionData(
    val content: String = "",
    val id: String = "",
    val mandatory: Int = 0,
    val mandatory: String = "",
    val url: String = "",
    val version: String = ""
)
) {
    //是否是强制升级
    fun isMustUpgrade() = mandatory == "1"
}
app/src/main/java/com/igo/user/ui/MainActivity.kt
@@ -354,7 +354,7 @@
        HttpManager.queryNewData().request(this, false) { _, it ->
            it?.run {
                if (isFinishing) return@run
                if (version > BuildConfig.VERSION_NAME && mandatory != 0) {
                if (version > BuildConfig.VERSION_NAME && mandatory.isNotEmpty()) {
                    val tipDialog = TipDialog()
                    tipDialog.arguments = bundleOf(
                        "title" to "新版本更新",
@@ -375,7 +375,11 @@
                    })
                    tipDialog.setDismissCallback(object : TipDialog.OnDismiss {
                        override fun onDismiss() {
                            finish()
                            if (isMustUpgrade()) {
                                closeAll()
                            } else {
                                finish()
                            }
                        }
                    })
                    tipDialog.show(supportFragmentManager, "update")
@@ -666,7 +670,7 @@
    }
    ///显示定位描述弹窗
    private fun showLocationDescDialog(sureCallback:()-> Unit) {
    private fun showLocationDescDialog(sureCallback: () -> Unit) {
        val rxPermissions = RxPermissions(this);
        if (!rxPermissions.isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) {
            val tipDialog = TipDialog()
app/src/main/java/com/igo/user/ui/mine/SettingActivity.kt
@@ -141,6 +141,7 @@
        HttpManager.queryNewData().request(this){_,it->
            dismissDialog()
            it?.run {
                if (isFinishing) return@run
                if (version > BuildConfig.VERSION_NAME) {
                    val tipDialog = TipDialog()
                    tipDialog.arguments = bundleOf("msg" to "有新版本可用,是否立即更新?")
@@ -155,6 +156,13 @@
                        override fun onCancel() {
                        }
                    })
                    tipDialog.setDismissCallback(object : TipDialog.OnDismiss {
                        override fun onDismiss() {
                            if (isMustUpgrade()) {
                                closeAll()
                            }
                        }
                    })
                    tipDialog.show(supportFragmentManager,"update")
                } else
                    myToast(getString(R.string.已经是最新版))
app/src/main/java/com/igo/user/utils/Const.kt
@@ -66,7 +66,7 @@
        const val FRENCH = "fr"
        //汉语
        const val CHINESE = "ch"
        const val CHINESE = "zh"
        //默认语言
        const val DEFAULT_LANGUAGE = FRENCH
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
@@ -1,7 +1,9 @@
package cn.sinata.xldutils.activity
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.pm.ActivityInfo
import android.os.Build
import android.os.Bundle
@@ -11,6 +13,7 @@
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import cn.sinata.xldutils.R
import cn.sinata.xldutils.rxutils.RequestHelper
import cn.sinata.xldutils.utils.LanguageUtil
@@ -20,15 +23,17 @@
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import org.jetbrains.anko.AnkoLogger
import kotlin.system.exitProcess
/**
 * 基础activity,包含设置默认强制竖屏显示,广播方式实现关闭全部继承自该activity,并注册了关闭广播的子类
 *
 */
abstract class BaseActivity : AppCompatActivity(), AnkoLogger,RequestHelper {
abstract class BaseActivity : AppCompatActivity(), AnkoLogger, RequestHelper {
    private lateinit var ACTION_CLOSE_ALL: String
    private val compositeDisposable = CompositeDisposable()
    //改用lazy初始,第一次使用时才会初始化
    private val dialog: ProgressDialog by lazy {
        ProgressDialog(this, R.style.Theme_ProgressDialog)
@@ -60,6 +65,10 @@
        }
        ACTION_CLOSE_ALL = "cn.sinata.base.%s.all.close".format(packageName)
        System.err.println(ACTION_CLOSE_ALL)
        LocalBroadcastManager.getInstance(this).registerReceiver(
            closeSelfBroadcastReceiver,
            IntentFilter(ACTION_CLOSE_ALL)
        )
    }
    override fun onRequestPermissionsResult(
@@ -72,8 +81,11 @@
    protected open fun closeAll() {
        val intent = Intent(ACTION_CLOSE_ALL)
        sendBroadcast(intent)
        LocalBroadcastManager.getInstance(this).sendBroadcast(intent)
//        android.os.Process.killProcess(android.os.Process.myPid())
//        exitProcess(0)
    }
    protected var isTouchHide = true
    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
@@ -93,12 +105,14 @@
            return super.dispatchTouchEvent(ev)
        }
    }
    /**
     * 是否注册关闭全部的广播
     */
    protected fun isRegisterCloseBroadReceiver(): Boolean {
        return true
    }
    /**
     * 是否点击键盘以外的位置
     *
@@ -127,14 +141,15 @@
     */
    fun hideInputMethod() {
        (getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager)
                .hideSoftInputFromWindow(
                    this.currentFocus!!.windowToken,
                    InputMethodManager.HIDE_NOT_ALWAYS
                )
            .hideSoftInputFromWindow(
                this.currentFocus!!.windowToken,
                InputMethodManager.HIDE_NOT_ALWAYS
            )
    }
    override fun onDestroy() {
        super.onDestroy()
        LocalBroadcastManager.getInstance(this).unregisterReceiver(closeSelfBroadcastReceiver)
        if (!compositeDisposable.isDisposed) {
            compositeDisposable.dispose()
        }
@@ -182,5 +197,11 @@
        myToast(msg.toString())
    }
    open fun gotoLogin(){}
    open fun gotoLogin() {}
    private val closeSelfBroadcastReceiver = object : BroadcastReceiver() {
        override fun onReceive(p0: Context?, p1: Intent?) {
            finish()
        }
    }
}
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
@@ -7,19 +7,19 @@
 */
object Error {
    val REQUEST_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"请求出错!"
        "ch","zh"->"请求出错!"
        "fr"->"Erreur de demande"
        else->"Request Error"
    }
    val PARSER_ERROR = "Data Parse Error!"
    val NET_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"网络异常,请检查您的网络状态!"
        "ch","zh"->"网络异常,请检查您的网络状态!"
        "fr"->"Le réseau est anormal, veuillez vérifier l\'état de votre réseau!"
        else->"The network is abnormal, please check your network status!"
    }
    val SERVER_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"服务器异常,请稍后再试"
        "ch","zh"->"服务器异常,请稍后再试"
        "fr"->"Erreur de serveur, veuillez réessayer plus tard"
        else->"Server error, please retry later"
    }
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
@@ -45,7 +45,7 @@
    open fun onError(code: Int, msg: String) {
        if (msg == "TOKEN_INVALID"){
            _showToast(when(SPUtils.instance().getString("language")){
                "ch"->"您的身份已过期,请重新登录"
                "ch","zh"->"您的身份已过期,请重新登录"
                "fr"->"Votre identité a expiré, veuillez vous reconnecter"
                else->"Your identity has expired, please log in again"
            })
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -11,8 +11,19 @@
import java.util.Locale;
public class LanguageUtil {
    private static Locale getLocaleByLanguage(String language) {
        if (TextUtils.isEmpty(language)) {
            return Locale.FRENCH;
        }
        return switch (language) {
            case "zh", "ch" -> Locale.CHINESE;
            case "fr" -> Locale.FRENCH;
            default -> Locale.ENGLISH;
        };
    }
    public static Context attachBaseContext(Context context, String language, String country) {
        Locale locale = new Locale(language);
        Locale locale = getLocaleByLanguage(language);
        Locale.setDefault(locale);
        Resources resources = context.getResources();
        Configuration configuration = new Configuration(resources.getConfiguration());
@@ -39,7 +50,7 @@
        if (TextUtils.isEmpty(newLanguage)) {
            return;
        }
        Locale locale = new Locale(newLanguage);
        Locale locale = getLocaleByLanguage(newLanguage);
        Locale.setDefault(locale);
        Resources resources = context.getResources();
        Configuration configuration = new Configuration(resources.getConfiguration());