From 0635d28fe9c8cfe59eda6b077abf9abf665147e0 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期五, 04 九月 2026 13:41:26 +0800
Subject: [PATCH] 适配Android16 升级版本号

---
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaWebView.kt             |    2 
 rxnetty/build.gradle                                                           |    7 +
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaListener.kt            |    2 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/StringKt.kt             |   14 +++
 app/src/main/java/com/igo/user/ui/crosscity/ChooseLineActivity.kt              |   19 ++--
 app/src/main/java/com/igo/user/ui/login/ForgetActivity.kt                      |    7 -
 app/src/main/java/com/igo/user/ui/login/LoginActivity.kt                       |    3 
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisual.kt              |    4 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt      |    9 ++
 app/src/main/java/com/igo/user/ui/mine/ModifyPhoneActivity.kt                  |    5 -
 app/src/main/java/com/igo/user/utils/recaptcha/MainActivityViewModel.kt        |    2 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/view/TitleBar.kt              |    2 
 umeng_sdk/build.gradle                                                         |    4 
 app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt                      |    4 
 rxnetty/src/main/java/cn/sinata/rxnetty/netStatus/NetStateReceiver.java        |    7 +
 app/src/main/java/com/igo/user/ui/trip/TripActivity.kt                         |   36 +++++---
 app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt                  |   14 +-
 app/src/main/java/com/igo/user/ui/login/BindPhoneActivity.kt                   |    7 -
 app/build.gradle                                                               |   17 ++--
 app/src/main/java/com/igo/user/ui/mine/VerifyPhoneForUpdatePwdActivity.kt      |    2 
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualException.kt     |    2 
 xldutils-kotlin/build.gradle                                                   |    4 
 app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt           |    3 
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaJavascriptChannel.kt   |    2 
 app/src/main/java/com/igo/user/ui/crosscity/CrossCityFragment.kt               |    8 --
 app/src/main/java/com/igo/user/ui/logistics/LogisticsFragment.kt               |    2 
 download/build.gradle                                                          |    4 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/Extends.kt              |    9 +-
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/UtilKt.kt               |    2 
 app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualFragment.kt      |    8 +-
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/SelectPhotoDialog.kt |    4 
 31 files changed, 110 insertions(+), 105 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index a38a5aa..67c33f2 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,8 +4,8 @@
 apply plugin: 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
 
 android {
-    compileSdkVersion 35
-    buildToolsVersion "33.0.3"
+    compileSdkVersion 36
+    buildToolsVersion "36.0.0"
     namespace "com.igo.user"
     //签名
     signingConfigs {
@@ -20,9 +20,9 @@
     defaultConfig {
         applicationId "com.gopost.user"
         minSdkVersion 23
-        targetSdkVersion 35
-        versionCode 27
-        versionName "1.27"
+        targetSdkVersion 36
+        versionCode 28
+        versionName "1.28"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
     }
 
@@ -146,7 +146,6 @@
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
-    api "androidx.appcompat:appcompat:$support_version"
     implementation 'androidx.core:core-ktx:1.3.0'
     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
     implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
@@ -158,7 +157,7 @@
     //  androidTestImplementation 'androidx.test.ext:junit:1.1.1'
     // androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
     implementation project(path: ':xldutils-kotlin')
-    implementation 'com.google.android.material:material:1.3.0-alpha01'
+    implementation 'com.google.android.material:material:1.10.0'
     implementation project(path: ':rxnetty')
 //    implementation project(path: ':umeng_sdk')
     implementation 'com.youth.banner:banner:2.0.11'
@@ -169,7 +168,7 @@
     implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7'//二维码
     implementation 'com.haibin:calendarview:3.6.9'//日历
     implementation project(path: ':download')
-    implementation 'com.google.android.libraries.places:places:2.7.0'
+    implementation 'com.google.android.libraries.places:places:3.0.0'
     implementation 'com.facebook.android:facebook-share:12.2.0' //脸书分享
     implementation 'com.facebook.android:facebook-login:12.2.0' //脸书登录
     implementation 'com.twitter.sdk.android:twitter:3.1.1'
@@ -179,7 +178,7 @@
     coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.3'
 
     //谷歌地图和乘客端sdk
-    implementation 'com.google.android.gms:play-services-maps:18.1.0'
+    implementation 'com.google.android.gms:play-services-maps:20.0.0'
     implementation 'com.google.android.libraries.mapsplatform.transportation:transportation-consumer:3.0.0'
 
 
diff --git a/app/src/main/java/com/igo/user/ui/crosscity/ChooseLineActivity.kt b/app/src/main/java/com/igo/user/ui/crosscity/ChooseLineActivity.kt
index 16761bd..bc2ad06 100644
--- a/app/src/main/java/com/igo/user/ui/crosscity/ChooseLineActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/crosscity/ChooseLineActivity.kt
@@ -5,6 +5,8 @@
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
+import android.os.Build
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import androidx.recyclerview.widget.LinearLayoutManager
 import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
 import com.igo.user.R
@@ -29,7 +31,11 @@
     private val isScan by lazy { //是否扫码下单
         intent.getBooleanExtra("isScan",false)
     }
-    private var receiver: BroadcastReceiver? = null
+    private var receiver: BroadcastReceiver =  object :BroadcastReceiver() {
+        override fun onReceive(context: Context?, intent: Intent?) {
+            finish()
+        }
+    }
 
     override fun initClick() {
         adapter.setOnItemClickListener { view, position ->
@@ -51,17 +57,12 @@
         lvLine.setLayoutManager(LinearLayoutManager(this))
         lvLine.setMode(SwipeRefreshRecyclerLayout.Mode.None)
         lvLine.setAdapter(adapter)
-        receiver = object :BroadcastReceiver() {
-            override fun onReceive(context: Context?, intent: Intent?) {
-                finish()
-            }
-        }
-        registerReceiver(receiver, IntentFilter("crossOrderSuccess"))
+
+        LocalBroadcastManager.getInstance(this).registerReceiver(receiver, IntentFilter("crossOrderSuccess"))
     }
 
     override fun onDestroy() {
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
         super.onDestroy()
-        if (receiver!=null)
-            unregisterReceiver(receiver)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/igo/user/ui/crosscity/CrossCityFragment.kt b/app/src/main/java/com/igo/user/ui/crosscity/CrossCityFragment.kt
index 80f962d..e6327e0 100644
--- a/app/src/main/java/com/igo/user/ui/crosscity/CrossCityFragment.kt
+++ b/app/src/main/java/com/igo/user/ui/crosscity/CrossCityFragment.kt
@@ -11,16 +11,8 @@
     private var endId:Int? = null //到达站点
     private var startCity = ""
     private var endCity = ""
-    private var receiver:BroadcastReceiver? = null
 
     override fun onFirstVisibleToUser() {
 
-    }
-
-
-    override fun onDestroy() {
-        super.onDestroy()
-        if (receiver!=null)
-            activity?.unregisterReceiver(receiver)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/igo/user/ui/login/BindPhoneActivity.kt b/app/src/main/java/com/igo/user/ui/login/BindPhoneActivity.kt
index 53eecfe..fca37dd 100644
--- a/app/src/main/java/com/igo/user/ui/login/BindPhoneActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/login/BindPhoneActivity.kt
@@ -15,19 +15,14 @@
 import cn.sinata.xldutils.utils.optInt
 import cn.sinata.xldutils.utils.optString
 import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.google.recaptcha.sample.RecaptchaVisual
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import com.igo.user.R
-import com.igo.user.dialog.ImageCodeDialog
 import com.igo.user.dialog.SingleWheelDialog
 import com.igo.user.interfaces.StringCallback
 import com.igo.user.network.HttpManager
 import com.igo.user.network.request
 import com.igo.user.ui.TransparentStatusBarActivity
-import com.igo.user.ui.login.LoginActivity.Companion.BASE_URL
-import com.igo.user.ui.login.LoginActivity.Companion.WEB_SITE_KEY
 import com.igo.user.utils.Const
-import com.twitter.sdk.android.core.TwitterAuthConfig
 import kotlinx.coroutines.launch
 import org.jetbrains.anko.find
 import org.jetbrains.anko.startActivityForResult
diff --git a/app/src/main/java/com/igo/user/ui/login/ForgetActivity.kt b/app/src/main/java/com/igo/user/ui/login/ForgetActivity.kt
index 5b1525a..09d6a5c 100644
--- a/app/src/main/java/com/igo/user/ui/login/ForgetActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/login/ForgetActivity.kt
@@ -7,20 +7,15 @@
 import android.widget.EditText
 import android.widget.TextView
 import androidx.activity.viewModels
-import androidx.core.os.bundleOf
 import androidx.lifecycle.lifecycleScope
 import cn.sinata.xldutils.utils.LengthFilter
 import cn.sinata.xldutils.utils.isValidPhone
 import cn.sinata.xldutils.utils.myToast
-import com.google.recaptcha.sample.RecaptchaVisual
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import com.igo.user.R
-import com.igo.user.dialog.ImageCodeDialog
 import com.igo.user.network.HttpManager
 import com.igo.user.network.request
 import com.igo.user.ui.TransparentStatusBarActivity
-import com.igo.user.ui.login.LoginActivity.Companion.BASE_URL
-import com.igo.user.ui.login.LoginActivity.Companion.WEB_SITE_KEY
 import com.igo.user.utils.DisableSpaceInputFilter
 import kotlinx.coroutines.launch
 import org.jetbrains.anko.find
diff --git a/app/src/main/java/com/igo/user/ui/login/LoginActivity.kt b/app/src/main/java/com/igo/user/ui/login/LoginActivity.kt
index 377d1b5..f6c8363 100644
--- a/app/src/main/java/com/igo/user/ui/login/LoginActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/login/LoginActivity.kt
@@ -7,7 +7,6 @@
 import MainActivityViewModel
 import android.app.Activity
 import android.content.Intent
-import android.net.Uri
 import android.os.CountDownTimer
 import android.util.Log
 import android.view.View
@@ -42,7 +41,7 @@
 import com.google.android.gms.common.ConnectionResult
 import com.google.android.gms.common.GoogleApiAvailability
 import com.google.android.gms.recaptcha.RecaptchaClient
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import com.igo.user.BuildConfig
 import com.igo.user.R
 import com.igo.user.dialog.SingleWheelDialog
diff --git a/app/src/main/java/com/igo/user/ui/logistics/LogisticsFragment.kt b/app/src/main/java/com/igo/user/ui/logistics/LogisticsFragment.kt
index 30706e1..dc9f7c4 100644
--- a/app/src/main/java/com/igo/user/ui/logistics/LogisticsFragment.kt
+++ b/app/src/main/java/com/igo/user/ui/logistics/LogisticsFragment.kt
@@ -301,7 +301,7 @@
                 )
                 uiSettings.isMyLocationButtonEnabled = false
                 setOnMyLocationChangeListener {
-                    Log.e(Const.Tag, "物流:lat:" + it.latitude + ",lon:" + it.longitude)
+                    Log.e(Const.Tag, "当前定位:lat:" + it.latitude + ",lon:" + it.longitude)
                     IGoApplication.setLocation(it.latitude, it.longitude)
 //                IGoApplication.address = it.address
 //                IGoApplication.cityCode = it.extras.getString("adcode")?:""
diff --git a/app/src/main/java/com/igo/user/ui/mine/ModifyPhoneActivity.kt b/app/src/main/java/com/igo/user/ui/mine/ModifyPhoneActivity.kt
index 74cbc26..887190a 100644
--- a/app/src/main/java/com/igo/user/ui/mine/ModifyPhoneActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/ModifyPhoneActivity.kt
@@ -12,8 +12,7 @@
 import cn.sinata.xldutils.utils.isValidPhone
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.showAllowingStateLoss
-import com.google.recaptcha.sample.RecaptchaVisual
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import com.igo.user.IGoApplication.Companion.phone
 import com.igo.user.R
 import com.igo.user.dialog.SingleWheelDialog
@@ -23,8 +22,6 @@
 import com.igo.user.network.request
 import com.igo.user.ui.TransparentStatusBarActivity
 import com.igo.user.ui.login.AreaCodeActivity
-import com.igo.user.ui.login.LoginActivity.Companion.BASE_URL
-import com.igo.user.ui.login.LoginActivity.Companion.WEB_SITE_KEY
 import kotlinx.coroutines.launch
 import org.jetbrains.anko.find
 import org.jetbrains.anko.sdk27.coroutines.onClick
diff --git a/app/src/main/java/com/igo/user/ui/mine/VerifyPhoneForUpdatePwdActivity.kt b/app/src/main/java/com/igo/user/ui/mine/VerifyPhoneForUpdatePwdActivity.kt
index 2a3b0f4..2174296 100644
--- a/app/src/main/java/com/igo/user/ui/mine/VerifyPhoneForUpdatePwdActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/VerifyPhoneForUpdatePwdActivity.kt
@@ -9,7 +9,7 @@
 import cn.sinata.xldutils.utils.hidePhone
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optInt
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import com.igo.user.IGoApplication
 import com.igo.user.R
 import com.igo.user.extension.extIsEmptyOrNull
diff --git a/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt b/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
index f45e106..3af0891 100644
--- a/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
@@ -479,7 +479,7 @@
                 isMyLocationEnabled = true
                 uiSettings.isMyLocationButtonEnabled = false
                 setOnMyLocationChangeListener {
-                    Log.e(Const.Tag, "出租车:lat:" + it.latitude + ",lon:" + it.longitude)
+                    Log.e(Const.Tag, "当前定位:lat:" + it.latitude + ",lon:" + it.longitude)
                     IGoApplication.setLocation(it.latitude, it.longitude)
 //                IGoApplication.address = it.address
 //                IGoApplication.cityCode = it.extras.getString("adcode")?:""
@@ -663,7 +663,7 @@
         hadLoopRefresh = true
         viewLifecycleOwner.lifecycleScope.launch {
             while (true) {
-                delay(5000)
+                delay(10_000)
                 getDriverNum { _, data ->
                     val i = data?.optInt("number") ?: 0
                     val t = getString(R.string.当前附近有n辆车可用, i)
diff --git a/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt b/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
index 2219372..0253a71 100644
--- a/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
@@ -29,6 +29,8 @@
 import cn.sinata.xldutils.utils.optDouble
 import cn.sinata.xldutils.utils.optInt
 import cn.sinata.xldutils.utils.showAllowingStateLoss
+import cn.sinata.xldutils.utils.urlDecode
+import cn.sinata.xldutils.utils.urlEncode
 import cn.sinata.xldutils.visible
 import com.facebook.drawee.view.SimpleDraweeView
 import com.igo.user.IGoApplication
@@ -417,6 +419,7 @@
         tv_pay_offline.gone()
         tv_confirm_fee.gone()
         cl_driver.visible()
+        tv_action.gone()
         tv_action2.gone()
         when (order?.state) {
             in (1..5) -> {
@@ -442,7 +445,7 @@
                 title = getString(R.string.支付费用)
                 if (order?.isFrozen != 2) {
                     tv_pay_offline.visible() //新增提示文字
-                    tv_action.visible()
+                    //tv_action.visible()
                 }
                 tv_title.visible()
                 tv_action.text = getString(R.string.立即支付)
@@ -470,9 +473,7 @@
                     tv_tip.invisible()
                 }
                 tv_title.hide()
-                if (order!!.orderType == TripOrderFragment.TYPE_LOGISTICS) {
-                    tv_action.visible()
-                }
+                tv_action.visible()
                 tv_action.text = getString(R.string.匿名评价)
                 titleBar.getRightButton(0)?.visible()
                 if (order?.isFrozen != 2) {
@@ -524,8 +525,7 @@
                     val view = layoutInflater.inflate(R.layout.item_score_label, null) as CheckBox
                     view.text = it
                     view.isEnabled = false
-                    if (it in split)
-                        view.isChecked = true
+                    view.isChecked = !split.none { checkItem -> checkItem.equals(it, true) }
                     fl_label.addView(view)
                 }
                 tv_detail.visible()
@@ -841,7 +841,7 @@
 //    }
 
     override fun onStateChanged(id: Int, type: Int, state: Int) {
-        if (id == this.id && type == this.type && order?.state == 6) { //当前是待司机确认费用,需要重新获取订单信息
+        if (id == this.id && type == this.type && (order?.state == 6 || order?.state == 7 || order?.state == 8)) { //当前是待司机确认费用,需要重新获取订单信息
             getData()
         }
     }
diff --git a/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt b/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
index 9d82c6d..e248f57 100644
--- a/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
@@ -204,8 +204,7 @@
                     val view = layoutInflater.inflate(R.layout.item_score_label, null) as CheckBox
                     view.text = it
                     view.isEnabled = false
-                    if (it in split)
-                        view.isChecked = true
+                    view.isChecked = !split.none { checkItem -> checkItem.equals(it, true) }
                     fl_label.addView(view)
                 }
             }
diff --git a/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt b/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
index c8253ea..c7e4517 100644
--- a/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
@@ -71,6 +71,7 @@
 import com.igo.user.utils.google.JsonAuthTokenFactory
 import com.tbruyelle.rxpermissions2.RxPermissions
 import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.MutableSharedFlow
 import kotlinx.coroutines.launch
 import org.jetbrains.anko.dip
 import org.jetbrains.anko.find
@@ -82,12 +83,22 @@
 class TripActivity : BaseActivity(), Handler.Callback,
     OrderStateChangeListener {
     var aMap: ConsumerGoogleMap? = null
-
+    private val noticeCancelFlow = MutableSharedFlow<Boolean>()
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_trip)
         initView()
         initClick()
+        lifecycleScope.launch(Dispatchers.Main) {
+            repeatOnLifecycle(Lifecycle.State.RESUMED) {
+                noticeCancelFlow.collect {
+                    if (noResponseDialog.dialog?.isShowing != true) {
+                        noResponseDialog.show(supportFragmentManager, "noResponse")
+                        LogHelper.logRecord("显示超时无应答弹窗orderId:${id} orderType:${type}")
+                    }
+                }
+            }
+        }
     }
 
     private val app by lazy {
@@ -741,17 +752,11 @@
      * 超时无应答
      */
     fun noResponse(id: Int) {
-        if (isFinishing || isDestroyed) {
+        if (isFinishing || isDestroyed || id != this.id) {
             return
         }
-        lifecycleScope.launch(Dispatchers.Main) {
-            // 等待生命周期至少达到 RESUMED(即 onResume 之后)
-            if (id == this@TripActivity.id && !noResponseDialog.isAdded) {
-                repeatOnLifecycle(Lifecycle.State.RESUMED) {
-                    noResponseDialog.show(supportFragmentManager, "noResponse")
-                    LogHelper.logRecord("显示超时无应答弹窗orderId:${id} orderType:${type}")
-                }
-            }
+        lifecycleScope.launch {
+            noticeCancelFlow.emit(true)
         }
     }
 
@@ -1093,6 +1098,10 @@
         NettyClient.getInstance().checkNettyState()
     }
 
+    override fun finish() {
+        IGoApplication.tripId = ""
+        super.finish()
+    }
 
     override fun onDestroy() {
         handler.removeMessages(0)
@@ -1100,15 +1109,14 @@
         handler.removeMessages(2)
         handler.removeMessages(3)
         app.removeTripStateListener(this)
-        IGoApplication.tripId = ""
         session?.stop()
         super.onDestroy()
     }
 
-    override fun onBackPressed() {
-        if (ll_progress.visibility == View.VISIBLE)
+    override fun onBackPressHandle() {
+        if (ll_progress.isVisible)
             ll_progress.gone()
         else
-            super.onBackPressed()
+            super.onBackPressHandle()
     }
 }
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/MainActivityViewModel.kt b/app/src/main/java/com/igo/user/utils/recaptcha/MainActivityViewModel.kt
index 1c21ccd..21801ee 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/MainActivityViewModel.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/MainActivityViewModel.kt
@@ -19,7 +19,7 @@
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.viewModelScope
-import com.google.recaptcha.sample.RecaptchaVisualException
+import com.igo.user.utils.recaptcha.RecaptchaVisualException
 import kotlinx.coroutines.launch
 
 class MainActivityViewModel(
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaJavascriptChannel.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaJavascriptChannel.kt
index b7ecb69..83d963c 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaJavascriptChannel.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaJavascriptChannel.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 import android.webkit.JavascriptInterface
 
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaListener.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaListener.kt
index 260cdac..08b2ff4 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaListener.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaListener.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 interface RecaptchaListener {
   fun onLoad()
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisual.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisual.kt
index e378104..2dae242 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisual.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisual.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 import androidx.fragment.app.FragmentManager
 import java.util.Locale
@@ -15,7 +15,7 @@
 
     fun runCaptcha(): Deferred<String> {
         onDone = CompletableDeferred()
-        val fragment = RecaptchaVisualFragment.newInstance(siteKey, baseUrl, lang)
+        val fragment = RecaptchaVisualFragment.Companion.newInstance(siteKey, baseUrl, lang)
         fragment.configure(this)
         fragment.show(fragmentManager, "RecaptchaVisual")
         return onDone
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualException.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualException.kt
index b52c017..24d1069 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualException.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualException.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 class RecaptchaVisualException : Exception {
   constructor() : super()
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualFragment.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualFragment.kt
index 1dc5262..0d5a6b3 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualFragment.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaVisualFragment.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 import android.annotation.SuppressLint
 import android.app.Dialog
@@ -18,9 +18,9 @@
     fun newInstance(siteKey: String, baseUrl: String, lang: String?): RecaptchaVisualFragment {
       val f = RecaptchaVisualFragment()
       val args = Bundle()
-      args.putString(RecaptchaWebView.SITE_KEY, siteKey)
-      args.putString(RecaptchaWebView.BASE_URL, baseUrl)
-      args.putString(RecaptchaWebView.LANG, lang)
+      args.putString(RecaptchaWebView.Companion.SITE_KEY, siteKey)
+      args.putString(RecaptchaWebView.Companion.BASE_URL, baseUrl)
+      args.putString(RecaptchaWebView.Companion.LANG, lang)
       f.arguments = args
       return f
     }
diff --git a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaWebView.kt b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaWebView.kt
index 520d671..f021872 100644
--- a/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaWebView.kt
+++ b/app/src/main/java/com/igo/user/utils/recaptcha/RecaptchaWebView.kt
@@ -1,4 +1,4 @@
-package com.google.recaptcha.sample
+package com.igo.user.utils.recaptcha
 
 import android.content.Context
 import android.os.Bundle
diff --git a/download/build.gradle b/download/build.gradle
index 34f28cb..be0f824 100644
--- a/download/build.gradle
+++ b/download/build.gradle
@@ -1,12 +1,12 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 28
+    compileSdkVersion 36
     namespace "com.sinata.download"
 
     defaultConfig {
         minSdkVersion 16
-        targetSdkVersion 28
+        targetSdkVersion 36
     }
 
     buildTypes {
diff --git a/rxnetty/build.gradle b/rxnetty/build.gradle
index 42a5ab6..cb73da0 100644
--- a/rxnetty/build.gradle
+++ b/rxnetty/build.gradle
@@ -1,12 +1,12 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 35
+    compileSdkVersion 36
     namespace "cn.sinata.rxnetty"
 
     defaultConfig {
         minSdkVersion 23
-        targetSdkVersion 35
+        targetSdkVersion 36
 
     }
 
@@ -24,8 +24,9 @@
 
 dependencies {
     api fileTree(include: ['*.jar'], dir: 'libs')
+    implementation 'com.google.android.material:material:1.10.0'
+    implementation 'androidx.appcompat:appcompat:1.6.1'
     api 'io.reactivex:rxnetty:0.4.20'
-    api 'androidx.appcompat:appcompat:1.1.0'
     api 'io.netty:netty-buffer:4.1.5.Final'
     api 'io.netty:netty-handler:4.1.5.Final'
     api 'io.reactivex:rxandroid:1.2.1'
diff --git a/rxnetty/src/main/java/cn/sinata/rxnetty/netStatus/NetStateReceiver.java b/rxnetty/src/main/java/cn/sinata/rxnetty/netStatus/NetStateReceiver.java
index c102ed6..1337c3d 100644
--- a/rxnetty/src/main/java/cn/sinata/rxnetty/netStatus/NetStateReceiver.java
+++ b/rxnetty/src/main/java/cn/sinata/rxnetty/netStatus/NetStateReceiver.java
@@ -13,6 +13,7 @@
 import android.os.Looper;
 
 import androidx.annotation.RequiresApi;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -73,7 +74,7 @@
             IntentFilter filter = new IntentFilter();
             filter.addAction(CUSTOM_ANDROID_NET_CHANGE_ACTION);
             filter.addAction(ANDROID_NET_CHANGE_ACTION);
-            mAppContext.registerReceiver(getReceiver(), filter);
+            LocalBroadcastManager.getInstance(mAppContext).registerReceiver(getReceiver(), filter);
         }
         updateNetworkState(mAppContext);
     }
@@ -110,7 +111,7 @@
         }
         if (mBroadcastReceiver != null) {
             try {
-                appContext.unregisterReceiver(mBroadcastReceiver);
+                LocalBroadcastManager.getInstance(appContext).unregisterReceiver(mBroadcastReceiver);
             } catch (Exception e) {
                 e.printStackTrace();
             }
@@ -219,7 +220,7 @@
         filter.addAction(ANDROID_NET_CHANGE_ACTION);
         try {
             // 使用应用上下文注册广播,避免持有服务实例 由AI生成
-            context.getApplicationContext().registerReceiver(getReceiver(), filter);
+            LocalBroadcastManager.getInstance(context.getApplicationContext()).registerReceiver(getReceiver(), filter);
         } catch (Exception e) {
             // 注册失败时输出异常,避免影响长连接服务启动 由AI生成
             e.printStackTrace();
diff --git a/umeng_sdk/build.gradle b/umeng_sdk/build.gradle
index bfd9464..9bcf908 100644
--- a/umeng_sdk/build.gradle
+++ b/umeng_sdk/build.gradle
@@ -1,12 +1,12 @@
 apply plugin: 'com.android.library'
 
 android {
-    compileSdkVersion 29
+    compileSdkVersion 36
     namespace "com.umeng.sdk"
 
     defaultConfig {
         minSdkVersion 19
-        targetSdkVersion 28
+        targetSdkVersion 36
     }
     buildTypes {
         release {
diff --git a/xldutils-kotlin/build.gradle b/xldutils-kotlin/build.gradle
index 48ff6d7..720657e 100644
--- a/xldutils-kotlin/build.gradle
+++ b/xldutils-kotlin/build.gradle
@@ -2,12 +2,12 @@
 apply plugin: 'kotlin-android'
 
 android {
-    compileSdkVersion 33
+    compileSdkVersion 36
     namespace "cn.sinata.xldutils"
 
     defaultConfig {
         minSdkVersion 21
-        targetSdkVersion 29
+        targetSdkVersion 36
     }
     buildTypes {
         release {
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
index 95b8df9..3254589 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
@@ -12,6 +12,7 @@
 import android.view.Window
 import android.view.inputmethod.InputMethodManager
 import android.widget.EditText
+import androidx.activity.OnBackPressedCallback
 import androidx.appcompat.app.AppCompatActivity
 import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import cn.sinata.xldutils.R
@@ -67,8 +68,16 @@
             closeSelfBroadcastReceiver,
             IntentFilter(ACTION_CLOSE_ALL)
         )
+        onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
+            override fun handleOnBackPressed() {
+                onBackPressHandle()
+            }
+        })
     }
 
+    protected open fun onBackPressHandle() {
+        finish()
+    }
     override fun onRequestPermissionsResult(
         requestCode: Int,
         permissions: Array<out String>,
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/SelectPhotoDialog.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/SelectPhotoDialog.kt
index 301e1d5..69b0e8d 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/SelectPhotoDialog.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/SelectPhotoDialog.kt
@@ -105,7 +105,7 @@
 //        }
         //取消
         find<TextView>(R.id.tv_cancel).onClick {
-            onBackPressed()
+            onBackPressHandle()
         }
     }
 
@@ -137,7 +137,7 @@
                         val intent = Intent()
                         intent.putExtra(PATH, tempFile!!.absolutePath)
                         setResult(RESULT_OK, intent)
-                        onBackPressed()
+                        onBackPressHandle()
                         overridePendingTransition(0, 0)
                     }
                 }
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/Extends.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/Extends.kt
index 3682390..dcb32b6 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/Extends.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/Extends.kt
@@ -1,7 +1,6 @@
 package cn.sinata.xldutils.utils
 
 import android.content.Context
-import android.view.Gravity
 import android.view.LayoutInflater
 import android.widget.TextView
 import android.widget.Toast
@@ -19,12 +18,12 @@
     ft.commitAllowingStateLoss()
 }
 
-fun Fragment.myToast(text: CharSequence, longTime:Boolean=false) = activity?.myToast(text,longTime)
+fun Fragment.myToast(text: CharSequence, longTime: Boolean = false) = activity?.myToast(text, longTime)
 
-fun Context.myToast(message: CharSequence,longTime:Boolean=false) {
+fun Context.myToast(message: CharSequence, longTime: Boolean = false) {
     val toast = Toast(this)
-    toast.duration = if (longTime)Toast.LENGTH_LONG else Toast.LENGTH_SHORT
-    toast.setGravity(Gravity.CENTER, 0, 0)
+    toast.duration = if (longTime) Toast.LENGTH_LONG else Toast.LENGTH_SHORT
+//    toast.setGravity(Gravity.CENTER, 0, 0)
     val toastLayout = LayoutInflater.from(this).inflate(R.layout.layout_center_toast, null)
     val txtToast: TextView = toastLayout.findViewById(R.id.txt_toast)
     txtToast.text = message
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/StringKt.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/StringKt.kt
index 268e39e..3725074 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/StringKt.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/StringKt.kt
@@ -42,14 +42,24 @@
  * urlEncode
  */
 fun String?.urlEncode(): String {
-    return if (isNullOrEmpty()) "" else URLEncoder.encode(this, "utf-8")
+    return if (isNullOrEmpty()) "" else try {
+        URLEncoder.encode(this, "utf-8")
+    }catch (e: Exception){
+        e.printStackTrace()
+        this
+    }
 }
 
 /**
  * urlDecode
  */
 fun String?.urlDecode(): String {
-    return if (isNullOrEmpty()) "" else URLDecoder.decode(this, "utf-8")
+    return if (isNullOrEmpty()) "" else try {
+        URLDecoder.decode(this, "utf-8")
+    }catch (e: Exception){
+        e.printStackTrace()
+        this
+    }
 }
 
 /**
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/UtilKt.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/UtilKt.kt
index ae93d75..51f511e 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/UtilKt.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/UtilKt.kt
@@ -144,7 +144,7 @@
     return try {
         val manager = this.packageManager
         val info = manager.getPackageInfo(this.packageName, 0)
-        info.versionName
+        info.versionName!!
     } catch (e: Exception) {
         e.printStackTrace()
         "--"
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/view/TitleBar.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/view/TitleBar.kt
index 50d99ab..51d157c 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/view/TitleBar.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/view/TitleBar.kt
@@ -86,7 +86,7 @@
         titleView.backgroundDrawable = null
         //默认左键点击关闭页面
         leftView.setOnClickListener {
-            (context as Activity).onBackPressed()
+            (context as Activity).finish()
         }
     }
 

--
Gitblit v1.7.1