1.在解绑提示页面,增加提示语“Auto-Renew: Cancel”
2.适配Google Play 要求支持 16 KB 的内存页面大小,更新大部分第三方库到最新版本
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
o/bundleLibRuntimeToDirDebug
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +0,0 @@
|
|||||||
o/classes
|
|
||||||
Binary file not shown.
@@ -1 +1 @@
|
|||||||
#Thu Apr 16 16:49:17 CST 2026
|
#Tue Apr 21 16:52:55 CST 2026
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ android {
|
|||||||
targetSdkVersion 35
|
targetSdkVersion 35
|
||||||
versionCode 2202
|
versionCode 2202
|
||||||
// versionName "2.2.2"
|
// versionName "2.2.2"
|
||||||
versionName "2.2.2-Beta4"
|
versionName "2.2.2-Beta6"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
@@ -63,6 +63,17 @@ android {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//解决mapBox和百度地图libc++_shared.so发生冲突http://www.52im.net/blog-28523-2848.html
|
||||||
|
packagingOptions {
|
||||||
|
pickFirst 'lib/x86/libc++_shared.so'
|
||||||
|
pickFirst 'lib/x86_64/libc++_shared.so'
|
||||||
|
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
|
||||||
|
pickFirst 'lib/arm64-v8a/libc++_shared.so'
|
||||||
|
pickFirst 'lib/armeabi/libc++_shared.so'
|
||||||
|
pickFirst 'lib/mips/libc++_shared.so'
|
||||||
|
pickFirst 'lib/mips64/libc++_shared.so'
|
||||||
|
}
|
||||||
|
|
||||||
// 读取local.properties文件
|
// 读取local.properties文件
|
||||||
Properties properties = new Properties()
|
Properties properties = new Properties()
|
||||||
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
|
InputStream inputStream = project.rootProject.file('local.properties').newDataInputStream()
|
||||||
@@ -188,23 +199,23 @@ dependencies {
|
|||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
|
||||||
|
|
||||||
// Android官方库
|
// Android官方库
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||||
implementation 'androidx.arch.core:core-common:2.2.0'
|
implementation 'androidx.arch.core:core-common:2.2.0'
|
||||||
implementation 'androidx.arch.core:core-runtime:2.2.0'
|
implementation 'androidx.arch.core:core-runtime:2.2.0'
|
||||||
implementation 'androidx.activity:activity-ktx:1.9.3'
|
implementation 'androidx.activity:activity-ktx:1.10.1'
|
||||||
implementation 'androidx.fragment:fragment-ktx:1.5.6'
|
implementation 'androidx.fragment:fragment-ktx:1.8.9'
|
||||||
implementation 'androidx.annotation:annotation:1.9.1'
|
implementation 'androidx.annotation:annotation:1.10.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.8.7'
|
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.10.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.8.7'
|
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.10.0'
|
||||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7'
|
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.10.0'
|
||||||
|
|
||||||
implementation 'androidx.room:room-runtime:2.5.2'
|
implementation 'androidx.room:room-runtime:2.8.4'
|
||||||
// implementation 'androidx.room:room-rxjava2:2.3.0'
|
// implementation 'androidx.room:room-rxjava2:2.3.0'
|
||||||
implementation 'androidx.room:room-ktx:2.5.2'
|
implementation 'androidx.room:room-ktx:2.8.4'
|
||||||
kapt 'androidx.room:room-compiler:2.5.2'
|
kapt 'androidx.room:room-compiler:2.8.4'
|
||||||
//hilt依赖注入https://mvnrepository.com/artifact/com.google.dagger/hilt-android-gradle-plugin
|
//hilt依赖注入https://mvnrepository.com/artifact/com.google.dagger/hilt-android-gradle-plugin
|
||||||
implementation "com.google.dagger:hilt-android:2.57"
|
implementation "com.google.dagger:hilt-android:2.57.2"
|
||||||
kapt "com.google.dagger:hilt-android-compiler:2.57"
|
kapt "com.google.dagger:hilt-android-compiler:2.57.2"
|
||||||
|
|
||||||
//Android UI 开发效率的 UI 库https://github.com/Tencent/QMUI_Android
|
//Android UI 开发效率的 UI 库https://github.com/Tencent/QMUI_Android
|
||||||
implementation 'com.qmuiteam:qmui:2.1.0'
|
implementation 'com.qmuiteam:qmui:2.1.0'
|
||||||
@@ -221,11 +232,11 @@ dependencies {
|
|||||||
implementation "io.coil-kt:coil-gif:1.4.0"//支持GIF
|
implementation "io.coil-kt:coil-gif:1.4.0"//支持GIF
|
||||||
|
|
||||||
//lottie动画https://github.com/airbnb/lottie-android
|
//lottie动画https://github.com/airbnb/lottie-android
|
||||||
implementation 'com.airbnb.android:lottie:6.6.7'
|
implementation 'com.airbnb.android:lottie:6.7.1'
|
||||||
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
|
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
|
||||||
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.11'
|
implementation "io.github.cymchad:BaseRecyclerViewAdapterHelper:3.0.14"
|
||||||
//升级recyclerview,因BaseRecyclerViewAdapterHelper item点击事件是使用1.2.0
|
//升级recyclerview,因BaseRecyclerViewAdapterHelper item点击事件是使用1.2.0
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.3.1'
|
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||||
|
|
||||||
//谷歌地图
|
//谷歌地图
|
||||||
implementation 'com.google.android.gms:play-services-maps:20.0.0'
|
implementation 'com.google.android.gms:play-services-maps:20.0.0'
|
||||||
@@ -245,21 +256,24 @@ dependencies {
|
|||||||
//mapbox地图https://github.com/mapbox/mapbox-maps-android
|
//mapbox地图https://github.com/mapbox/mapbox-maps-android
|
||||||
// implementation 'com.mapbox.maps:android:10.2.0'
|
// implementation 'com.mapbox.maps:android:10.2.0'
|
||||||
//https://github.com/mapbox/mapbox-search-android
|
//https://github.com/mapbox/mapbox-search-android
|
||||||
//用mapbox搜索SDK,地理编码 有搜索ui组件,已包括mapbox-search-android架包
|
/**用mapbox搜索SDK,地理编码 有搜索ui组件,已包括mapbox-search-android架包
|
||||||
implementation "com.mapbox.search:mapbox-search-android-ui:2.5.1"
|
* 支持 16 KB 页面大小
|
||||||
|
* https://docs.mapbox.com/android/search/guides/install/#step-2-add-search-sdk-dependencies
|
||||||
|
*/
|
||||||
|
implementation "com.mapbox.search:mapbox-search-android-ui-ndk27:2.22.0"
|
||||||
// mapbox搜索SDK,地理编码 没有搜索ui组件
|
// mapbox搜索SDK,地理编码 没有搜索ui组件
|
||||||
// implementation "com.mapbox.search:mapbox-search-android:1.0.0-beta.25"
|
// implementation "com.mapbox.search:mapbox-search-android:1.0.0-beta.25"
|
||||||
//用于计算距离https://docs.mapbox.com/android/java/guides/turf/#available-methods
|
//用于计算距离https://docs.mapbox.com/android/java/guides/#installation
|
||||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:6.15.0'
|
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-turf:7.10.0'
|
||||||
//用于计算路线规划信息https://docs.mapbox.com/android/java/examples/dashed-directions-line/
|
//用于计算路线规划信息、地理编码
|
||||||
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:6.3.0'
|
implementation 'com.mapbox.mapboxsdk:mapbox-sdk-services:7.10.0'
|
||||||
|
|
||||||
// 权限请求框架:https://github.com/getActivity/XXPermissions
|
// 权限请求框架:https://github.com/getActivity/XXPermissions
|
||||||
implementation 'com.github.getActivity:XXPermissions:25.2'
|
implementation 'com.github.getActivity:XXPermissions:28.2'
|
||||||
// 吐司框架:https://github.com/getActivity/ToastUtils
|
// 吐司框架:https://github.com/getActivity/ToastUtils
|
||||||
implementation 'com.github.getActivity:Toaster:13.2'
|
implementation 'com.github.getActivity:Toaster:15.0'
|
||||||
// 日志调试框架:https://github.com/getActivity/Logcat ,在debug模式下集成
|
// 日志调试框架:https://github.com/getActivity/Logcat ,在debug模式下集成
|
||||||
debugImplementation 'com.github.getActivity:Logcat:12.3'
|
debugImplementation 'com.github.getActivity:Logcat:13.0'
|
||||||
|
|
||||||
// PictureSelector图片选择器,需要compileSdkVersion=31 https://github.com/LuckSiege/PictureSelector
|
// PictureSelector图片选择器,需要compileSdkVersion=31 https://github.com/LuckSiege/PictureSelector
|
||||||
// implementation 'io.github.lucksiege:pictureselector:v3.0.3'
|
// implementation 'io.github.lucksiege:pictureselector:v3.0.3'
|
||||||
@@ -268,14 +282,14 @@ dependencies {
|
|||||||
//压缩图片 https://github.com/zetbaitsu/Compressor
|
//压缩图片 https://github.com/zetbaitsu/Compressor
|
||||||
implementation 'id.zelory:compressor:3.0.1'
|
implementation 'id.zelory:compressor:3.0.1'
|
||||||
//图片裁剪功能https://github.com/CanHub/Android-Image-Cropper
|
//图片裁剪功能https://github.com/CanHub/Android-Image-Cropper
|
||||||
implementation 'com.vanniktech:android-image-cropper:4.6.0'
|
implementation 'com.vanniktech:android-image-cropper:4.7.0'
|
||||||
|
|
||||||
//******************************************极光推送start*****************************************************
|
//******************************************极光推送start*****************************************************
|
||||||
// https://docs.jiguang.cn/jpush/client/Android/android_guide
|
// https://docs.jiguang.cn/jpush/client/Android/android_guide
|
||||||
// implementation 'cn.jiguang.sdk:jcore:3.1.2' // 此处以JCore 2.7.2 版本为例。
|
// implementation 'cn.jiguang.sdk:jcore:3.1.2' // 此处以JCore 2.7.2 版本为例。
|
||||||
// implementation 'cn.jiguang.sdk:jpush:4.6.0' // 此处以JPush 4.0.0 版本为例
|
// implementation 'cn.jiguang.sdk:jpush:4.6.0' // 此处以JPush 4.0.0 版本为例
|
||||||
implementation 'cn.jiguang.sdk:jcore-google:5.1.0' // 此处以JCore 2.7.2 版本为例。
|
implementation 'cn.jiguang.sdk:jcore-google:5.3.7' // 此处以JCore 2.7.2 版本为例。
|
||||||
implementation 'cn.jiguang.sdk:jpush-google:5.8.0' // 此处以JPush 4.0.0 版本为例
|
implementation 'cn.jiguang.sdk:jpush-google:6.0.7' // 此处以JPush 4.0.0 版本为例
|
||||||
// 接入华为厂商
|
// 接入华为厂商
|
||||||
// implementation 'com.huawei.hms:push:6.1.0.300'
|
// implementation 'com.huawei.hms:push:6.1.0.300'
|
||||||
// implementation 'cn.jiguang.sdk.plugin:huawei:4.0.0'// 极光厂商插件版本与接入 JPush 版本保持一致,下同
|
// implementation 'cn.jiguang.sdk.plugin:huawei:4.0.0'// 极光厂商插件版本与接入 JPush 版本保持一致,下同
|
||||||
@@ -306,13 +320,13 @@ dependencies {
|
|||||||
implementation 'com.stripe:stripe-android:20.27.0'
|
implementation 'com.stripe:stripe-android:20.27.0'
|
||||||
|
|
||||||
//百度地图基础定位组件
|
//百度地图基础定位组件
|
||||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.6.5.1'
|
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.6.7'
|
||||||
//地图组件
|
//地图组件
|
||||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.2'
|
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.6.7'
|
||||||
//检索组件
|
//检索组件
|
||||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.2'
|
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.6.7'
|
||||||
//工具组件
|
//工具组件
|
||||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.2'
|
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.6.7'
|
||||||
|
|
||||||
//微信登录、支付
|
//微信登录、支付
|
||||||
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
|
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:+'
|
||||||
@@ -326,7 +340,7 @@ dependencies {
|
|||||||
implementation 'no.nordicsemi.android:mcumgr-ble:2.7.4'
|
implementation 'no.nordicsemi.android:mcumgr-ble:2.7.4'
|
||||||
|
|
||||||
//适配Android 12以下SplashScreen启动动画,闪屏图片
|
//适配Android 12以下SplashScreen启动动画,闪屏图片
|
||||||
implementation 'androidx.core:core-splashscreen:1.0.1'
|
implementation 'androidx.core:core-splashscreen:1.2.0'
|
||||||
//优雅、万能自定义日历https://github.com/huanghaibin-dev/CalendarView
|
//优雅、万能自定义日历https://github.com/huanghaibin-dev/CalendarView
|
||||||
// implementation 'com.haibin:calendarview:3.7.1'
|
// implementation 'com.haibin:calendarview:3.7.1'
|
||||||
//https://github.com/angcyo/CalendarView
|
//https://github.com/angcyo/CalendarView
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.abbidot.tracker.util.Util
|
|||||||
import com.baidu.mapapi.search.route.BikingRouteResult
|
import com.baidu.mapapi.search.route.BikingRouteResult
|
||||||
import com.baidu.mapapi.search.route.DrivingRouteResult
|
import com.baidu.mapapi.search.route.DrivingRouteResult
|
||||||
import com.baidu.mapapi.search.route.IndoorRouteResult
|
import com.baidu.mapapi.search.route.IndoorRouteResult
|
||||||
|
import com.baidu.mapapi.search.route.IntegralRouteResult
|
||||||
import com.baidu.mapapi.search.route.MassTransitRouteResult
|
import com.baidu.mapapi.search.route.MassTransitRouteResult
|
||||||
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener
|
import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener
|
||||||
import com.baidu.mapapi.search.route.PlanNode
|
import com.baidu.mapapi.search.route.PlanNode
|
||||||
@@ -144,6 +145,10 @@ class RoutePlanningViewModel : ViewModel() {
|
|||||||
|
|
||||||
override fun onGetBikingRouteResult(p0: BikingRouteResult?) {
|
override fun onGetBikingRouteResult(p0: BikingRouteResult?) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onGetIntegralRouteResult(p0: IntegralRouteResult?) {
|
||||||
|
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -215,7 +215,8 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
|||||||
CrashReport.setUserId(MMKVUtil.getString(MMKVKey.Email))
|
CrashReport.setUserId(MMKVUtil.getString(MMKVKey.Email))
|
||||||
//预先加载相册,防止上传头像几千张照片加载慢
|
//预先加载相册,防止上传头像几千张照片加载慢
|
||||||
XXPermissions.with(this).permission(PermissionLists.getReadMediaImagesPermission())
|
XXPermissions.with(this).permission(PermissionLists.getReadMediaImagesPermission())
|
||||||
.request { _, allGranted ->
|
.request { _, deniedList ->
|
||||||
|
val allGranted = deniedList.isEmpty()
|
||||||
if (allGranted) {
|
if (allGranted) {
|
||||||
EasyPhotos.preLoad(this)
|
EasyPhotos.preLoad(this)
|
||||||
// {
|
// {
|
||||||
@@ -310,7 +311,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
|||||||
//蓝牙连接就去连接socket
|
//蓝牙连接就去连接socket
|
||||||
// mBleReportManage.dealBleReportData(macID, null)
|
// mBleReportManage.dealBleReportData(macID, null)
|
||||||
} else {
|
} else {
|
||||||
mLogBleReportViewModel.uploadLog(mContext, macID,deviceOutId)
|
mLogBleReportViewModel.uploadLog(mContext, macID, deviceOutId)
|
||||||
startCountDownConBle(15)
|
startCountDownConBle(15)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -454,7 +455,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
|||||||
packageUnavailableState()
|
packageUnavailableState()
|
||||||
//刚开始打开APP上传日志
|
//刚开始打开APP上传日志
|
||||||
getPet(false)?.apply {
|
getPet(false)?.apply {
|
||||||
mLogBleReportViewModel.uploadLog(mContext, macID,deviceOutId)
|
mLogBleReportViewModel.uploadLog(mContext, macID, deviceOutId)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
onChangeClick(mSelectPetPosition)
|
onChangeClick(mSelectPetPosition)
|
||||||
@@ -573,7 +574,7 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
|
|||||||
private fun checkPermissions() {
|
private fun checkPermissions() {
|
||||||
val checkBleOpen = MMKVUtil.getBoolean(MMKVKey.isFirstCheckBleOpen, true)
|
val checkBleOpen = MMKVUtil.getBoolean(MMKVKey.isFirstCheckBleOpen, true)
|
||||||
if (checkBleOpen) MMKVUtil.putBoolean(MMKVKey.isFirstCheckBleOpen, false)
|
if (checkBleOpen) MMKVUtil.putBoolean(MMKVKey.isFirstCheckBleOpen, false)
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
Util.checkBluetoothPermissionsEnabled(this, {
|
||||||
// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext)
|
// mAutomaticConnectionDeviceViewModel.autoConnectBleDevice(mContext)
|
||||||
}, isCheckBleOpen = checkBleOpen)
|
}, isCheckBleOpen = checkBleOpen)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ import com.stripe.android.PaymentConfiguration
|
|||||||
import com.tencent.bugly.crashreport.CrashReport
|
import com.tencent.bugly.crashreport.CrashReport
|
||||||
import com.tencent.mm.opensdk.constants.ConstantsAPI
|
import com.tencent.mm.opensdk.constants.ConstantsAPI
|
||||||
import com.tencent.mm.opensdk.openapi.IWXAPI
|
import com.tencent.mm.opensdk.openapi.IWXAPI
|
||||||
import java.util.*
|
import java.util.Calendar
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -179,7 +179,7 @@ class SplashActivity : QMUIActivity() {
|
|||||||
// }, 600)
|
// }, 600)
|
||||||
// }
|
// }
|
||||||
mViewBinding.splashLogoIv.visibility = View.VISIBLE
|
mViewBinding.splashLogoIv.visibility = View.VISIBLE
|
||||||
mCountDownTimerViewModel.startCountDown(2)
|
mCountDownTimerViewModel.startCountDown(1)
|
||||||
|
|
||||||
init()
|
init()
|
||||||
}
|
}
|
||||||
@@ -219,8 +219,8 @@ class SplashActivity : QMUIActivity() {
|
|||||||
initMapbox()
|
initMapbox()
|
||||||
}
|
}
|
||||||
|
|
||||||
val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
|
||||||
//腾讯bugly初始化
|
//腾讯bugly初始化
|
||||||
|
val buglyKey = Util.getMetadata(applicationContext, KeyNames.BUG_LY_KEY_NAME)
|
||||||
CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug())
|
CrashReport.initCrashReport(applicationContext, buglyKey, AppUtils.isDebug())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ class AddNewTracker1Activity :
|
|||||||
* 检查获取定位蓝牙权限
|
* 检查获取定位蓝牙权限
|
||||||
*/
|
*/
|
||||||
private fun checkPermissions() {
|
private fun checkPermissions() {
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
Util.checkBluetoothPermissionsEnabled(this, {
|
||||||
val intent = Intent(mContext, AddNewTracker3Activity::class.java)
|
val intent = Intent(mContext, AddNewTracker3Activity::class.java)
|
||||||
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class AddNewTracker2Activity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
Util.checkBluetoothPermissionsEnabled(this, {
|
||||||
startScanBle()
|
startScanBle()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -402,7 +402,7 @@ class PreviewFencesZoneActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goEditFences() {
|
private fun goEditFences() {
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
mCurrentFences?.apply {
|
mCurrentFences?.apply {
|
||||||
val intent = if (fenceType == ConstantInt.SafeZone) Intent(
|
val intent = if (fenceType == ConstantInt.SafeZone) Intent(
|
||||||
mContext, EditSafeZoneActivity::class.java
|
mContext, EditSafeZoneActivity::class.java
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ class VirtualFencesActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goPreviewFencesZone(fencesBean: FencesBean) {
|
private fun goPreviewFencesZone(fencesBean: FencesBean) {
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
mPetBean?.apply {
|
mPetBean?.apply {
|
||||||
val intent = Intent(mContext, PreviewFencesZoneActivity::class.java)
|
val intent = Intent(mContext, PreviewFencesZoneActivity::class.java)
|
||||||
intent.putExtra(ConstantString.Fence, fencesBean)
|
intent.putExtra(ConstantString.Fence, fencesBean)
|
||||||
@@ -351,7 +351,7 @@ class VirtualFencesActivity :
|
|||||||
private fun goAddSafeZone() {
|
private fun goAddSafeZone() {
|
||||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||||
if (share != ConstantInt.NoShare) return
|
if (share != ConstantInt.NoShare) return
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
val intent = Intent(mContext, AddSafeZoneActivity::class.java)
|
val intent = Intent(mContext, AddSafeZoneActivity::class.java)
|
||||||
intent.putExtra(ConstantString.Pet, mPetBean)
|
intent.putExtra(ConstantString.Pet, mPetBean)
|
||||||
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
||||||
@@ -362,7 +362,7 @@ class VirtualFencesActivity :
|
|||||||
private fun goAddNoGoZone() {
|
private fun goAddNoGoZone() {
|
||||||
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
val share = MMKVUtil.getInt(MMKVKey.Shared)
|
||||||
if (share != ConstantInt.NoShare) return
|
if (share != ConstantInt.NoShare) return
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
val intent = Intent(mContext, AddNoGoZoneActivity::class.java)
|
val intent = Intent(mContext, AddNoGoZoneActivity::class.java)
|
||||||
intent.putExtra(ConstantString.Pet, mPetBean)
|
intent.putExtra(ConstantString.Pet, mPetBean)
|
||||||
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
intent.putExtra(ConstantString.Fence, mGetFencesBean)
|
||||||
|
|||||||
@@ -343,7 +343,7 @@ class LedLightActivity : BaseActivity<ActivityLedLightBinding>(ActivityLedLightB
|
|||||||
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
||||||
//蓝牙控制
|
//蓝牙控制
|
||||||
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
||||||
SRBleUtil.instance.setBleLedSwitch(mContext, it.bleDevice, mode)
|
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivity, it.bleDevice, mode)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//远程控制
|
//远程控制
|
||||||
@@ -414,7 +414,7 @@ class LedLightActivity : BaseActivity<ActivityLedLightBinding>(ActivityLedLightB
|
|||||||
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
if (BleManager.getInstance().isConnected(deviceMacId)) {
|
||||||
//蓝牙控制
|
//蓝牙控制
|
||||||
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
SRBleUtil.instance.getConnectMacDevice(deviceMacId)?.let {
|
||||||
SRBleUtil.instance.setBleLedSwitch(mContext, it.bleDevice, ledSwitch)
|
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivity, it.bleDevice, ledSwitch)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//远程控制
|
//远程控制
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ class LedLightActivityV0 : BaseActivity<ActivityLedLightBinding>(ActivityLedLigh
|
|||||||
|
|
||||||
private fun setBleLedMode(mode: Int) {
|
private fun setBleLedMode(mode: Int) {
|
||||||
mBleTrackDeviceBean?.apply {
|
mBleTrackDeviceBean?.apply {
|
||||||
SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode)
|
SRBleUtil.instance.setBleLedSwitch(this@LedLightActivityV0, bleDevice, mode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ class AddWifiPasswordActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goEditWifiActivity() {
|
private fun goEditWifiActivity() {
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
||||||
intent.putExtra(ConstantString.WiFi, mWiFiBean)
|
intent.putExtra(ConstantString.WiFi, mWiFiBean)
|
||||||
mDecWiFiAddressData?.let {
|
mDecWiFiAddressData?.let {
|
||||||
|
|||||||
@@ -178,7 +178,7 @@ class AddWifiPowerZone1Activity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goNext() {
|
private fun goNext() {
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
Intent(mContext, AddWifiPowerZone2Activity::class.java).let {
|
Intent(mContext, AddWifiPowerZone2Activity::class.java).let {
|
||||||
mPetBean?.let { pet ->
|
mPetBean?.let { pet ->
|
||||||
it.putExtra(ConstantString.Pet, pet)
|
it.putExtra(ConstantString.Pet, pet)
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ class AddWifiPowerZone2Activity :
|
|||||||
override fun onClick(v: View?) {
|
override fun onClick(v: View?) {
|
||||||
mViewBinding.apply {
|
mViewBinding.apply {
|
||||||
when (v!!) {
|
when (v!!) {
|
||||||
btnAddWifiZone2Next -> Util.checkBluetoothPermissionsEnabled(mContext, {
|
btnAddWifiZone2Next -> Util.checkBluetoothPermissionsEnabled(this@AddWifiPowerZone2Activity, {
|
||||||
goNext()
|
goNext()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -272,7 +272,7 @@ class AddWifiPowerZone3Activity :
|
|||||||
private fun checkPermission() {
|
private fun checkPermission() {
|
||||||
//从 Android 6.0(API 23)开始,定位权限现在被用于 Wi-Fi 扫描
|
//从 Android 6.0(API 23)开始,定位权限现在被用于 Wi-Fi 扫描
|
||||||
Util.checkPermissions(
|
Util.checkPermissions(
|
||||||
mContext, object : Util.RequestPermissionCallback {
|
this, object : Util.RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
addListData()
|
addListData()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ class PowerSavingSetActivity :
|
|||||||
if (share != ConstantInt.NoShare) {
|
if (share != ConstantInt.NoShare) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
if (mZoneAdapter.getData().isNotEmpty()) {
|
if (mZoneAdapter.getData().isNotEmpty()) {
|
||||||
val wiFiZoneBean = mZoneAdapter.getData()[pos]
|
val wiFiZoneBean = mZoneAdapter.getData()[pos]
|
||||||
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java)
|
||||||
|
|||||||
@@ -718,7 +718,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
|||||||
*/
|
*/
|
||||||
private fun setLedSwitch(mode: Int) {
|
private fun setLedSwitch(mode: Int) {
|
||||||
mTrackBleDevice?.apply {
|
mTrackBleDevice?.apply {
|
||||||
SRBleUtil.instance.setBleLedSwitch(mContext, bleDevice, mode)
|
SRBleUtil.instance.setBleLedSwitch(this@LiveActivityV3, bleDevice, mode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1109,7 +1109,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
|
|||||||
* 找蓝牙设备
|
* 找蓝牙设备
|
||||||
*/
|
*/
|
||||||
private fun findBleDevice(mac: String) {
|
private fun findBleDevice(mac: String) {
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
Util.checkBluetoothPermissionsEnabled(this, {
|
||||||
showAndHideFindLayout()
|
showAndHideFindLayout()
|
||||||
mViewBinding.ilLiveV2BluetoothFindDevice.apply {
|
mViewBinding.ilLiveV2BluetoothFindDevice.apply {
|
||||||
mFindBleDeviceViewModel.startScanFind(
|
mFindBleDeviceViewModel.startScanFind(
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ class FirstPermissionsActivity :
|
|||||||
override fun initData() {
|
override fun initData() {
|
||||||
super.initData()
|
super.initData()
|
||||||
|
|
||||||
mPermissionsCommon = PermissionsActivityCommon(mContext).apply {
|
mPermissionsCommon = PermissionsActivityCommon(this).apply {
|
||||||
registerGpsReceiver()
|
registerGpsReceiver()
|
||||||
}
|
}
|
||||||
mPermissionsAdapter =
|
mPermissionsAdapter =
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class PermissionsSetActivity :
|
|||||||
setTopBarTitle(R.string.txt_permissions)
|
setTopBarTitle(R.string.txt_permissions)
|
||||||
setLeftBackImage(R.drawable.icon_white_back_svg)
|
setLeftBackImage(R.drawable.icon_white_back_svg)
|
||||||
|
|
||||||
mPermissionsCommon = PermissionsActivityCommon(mContext).apply {
|
mPermissionsCommon = PermissionsActivityCommon(this).apply {
|
||||||
registerGpsReceiver()
|
registerGpsReceiver()
|
||||||
}
|
}
|
||||||
mPermissionsSetAdapter =
|
mPermissionsSetAdapter =
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ class ChoosePlanActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun goSureSubscriptionPlan() {
|
private fun goSureSubscriptionPlan() {
|
||||||
Util.checkLocationPermissionsGpsEnabled(mContext, {
|
Util.checkLocationPermissionsGpsEnabled(this, {
|
||||||
Intent(
|
Intent(
|
||||||
mContext, SureSubscriptionPlanActivity::class.java
|
mContext, SureSubscriptionPlanActivity::class.java
|
||||||
).let {
|
).let {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ class SubscriptionHistoryActivity :
|
|||||||
super.onResume()
|
super.onResume()
|
||||||
if (mRefreshPackage) {
|
if (mRefreshPackage) {
|
||||||
mRefreshPackage = false
|
mRefreshPackage = false
|
||||||
mSubscriptionViewModel.getHistoryIncludeRenew("sub_1TN3ccCUI9XSagUNmhpfpRk4")
|
mSubscriptionViewModel.getHistoryIncludeRenew(subscriptionId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,13 @@ import android.location.LocationManager
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
|
||||||
import com.abbidot.tracker.R
|
import com.abbidot.tracker.R
|
||||||
|
import com.abbidot.tracker.base.BaseActivity
|
||||||
import com.abbidot.tracker.bean.DataBean
|
import com.abbidot.tracker.bean.DataBean
|
||||||
import com.abbidot.tracker.constant.ConstantInt
|
import com.abbidot.tracker.constant.ConstantInt
|
||||||
import com.abbidot.tracker.receiver.GPSMonitorReceiver
|
import com.abbidot.tracker.receiver.GPSMonitorReceiver
|
||||||
import com.abbidot.tracker.util.Util
|
import com.abbidot.tracker.util.Util
|
||||||
import com.abbidot.tracker.util.bluetooth.SRBleUtil
|
import com.abbidot.tracker.util.bluetooth.SRBleUtil
|
||||||
|
import com.baidu.mshield.x0.EngineImpl.mContext
|
||||||
import com.clj.fastble.BleManager
|
import com.clj.fastble.BleManager
|
||||||
import com.hjq.permissions.XXPermissions
|
import com.hjq.permissions.XXPermissions
|
||||||
import com.hjq.permissions.permission.PermissionLists
|
import com.hjq.permissions.permission.PermissionLists
|
||||||
@@ -21,11 +23,11 @@ import com.hjq.permissions.permission.PermissionLists
|
|||||||
* @link
|
* @link
|
||||||
* @description:
|
* @description:
|
||||||
*/
|
*/
|
||||||
class PermissionsActivityCommon(context: Context) {
|
class PermissionsActivityCommon(activity: BaseActivity<*>) {
|
||||||
|
|
||||||
private val mLocationManager =
|
private val mLocationManager =
|
||||||
context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
activity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||||
private val mContext = context
|
private val mActivity = activity
|
||||||
private var mGPSListenerReceiver: GPSMonitorReceiver? = null
|
private var mGPSListenerReceiver: GPSMonitorReceiver? = null
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -172,7 +174,7 @@ class PermissionsActivityCommon(context: Context) {
|
|||||||
*/
|
*/
|
||||||
fun operateBluetooth() {
|
fun operateBluetooth() {
|
||||||
Util.checkPermissions(
|
Util.checkPermissions(
|
||||||
mContext,
|
mActivity,
|
||||||
object : Util.RequestPermissionCallback {
|
object : Util.RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
if (BleManager.getInstance().isSupportBle) {
|
if (BleManager.getInstance().isSupportBle) {
|
||||||
@@ -191,11 +193,12 @@ class PermissionsActivityCommon(context: Context) {
|
|||||||
*/
|
*/
|
||||||
fun operateGPSLocation() {
|
fun operateGPSLocation() {
|
||||||
Util.checkPermissions(
|
Util.checkPermissions(
|
||||||
mContext,
|
mActivity,
|
||||||
object : Util.RequestPermissionCallback {
|
object : Util.RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
mContext.startActivity(intent)
|
mContext.startActivity(intent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,7 +214,7 @@ class PermissionsActivityCommon(context: Context) {
|
|||||||
*/
|
*/
|
||||||
fun operateNotifications(adapter: BaseRecyclerAdapter<DataBean>, expansionState: Int) {
|
fun operateNotifications(adapter: BaseRecyclerAdapter<DataBean>, expansionState: Int) {
|
||||||
Util.checkPermissions(
|
Util.checkPermissions(
|
||||||
mContext,
|
mActivity,
|
||||||
object : Util.RequestPermissionCallback {
|
object : Util.RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
updatePermissionsState(adapter, expansionState)
|
updatePermissionsState(adapter, expansionState)
|
||||||
|
|||||||
@@ -1109,7 +1109,7 @@ class HomeTrackFragment :
|
|||||||
*/
|
*/
|
||||||
private fun connectionBtn(btnString: String) {
|
private fun connectionBtn(btnString: String) {
|
||||||
if (btnString == getString(R.string.txt_unconnect_no)) {
|
if (btnString == getString(R.string.txt_unconnect_no)) {
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext!!, {
|
Util.checkBluetoothPermissionsEnabled(getHomeV2Activity()!!, {
|
||||||
getHomeV2Activity()?.getPet()?.apply {
|
getHomeV2Activity()?.getPet()?.apply {
|
||||||
mConnectionDeviceViewModel.connectDeviceToMac(
|
mConnectionDeviceViewModel.connectDeviceToMac(
|
||||||
getHomeV2Activity()!!, macID, false
|
getHomeV2Activity()!!, macID, false
|
||||||
@@ -1172,7 +1172,7 @@ class HomeTrackFragment :
|
|||||||
if (BleManager.getInstance().isConnected(it.deviceMacId)) {
|
if (BleManager.getInstance().isConnected(it.deviceMacId)) {
|
||||||
//蓝牙控制
|
//蓝牙控制
|
||||||
getBleTrackDeviceBean(false)?.let { ble ->
|
getBleTrackDeviceBean(false)?.let { ble ->
|
||||||
SRBleUtil.instance.setBleLedSwitch(mContext!!, ble.bleDevice, ledSwitch)
|
SRBleUtil.instance.setBleLedSwitch(getHomeV2Activity()!!, ble.bleDevice, ledSwitch)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// setLedState(ledSwitch)
|
// setLedState(ledSwitch)
|
||||||
|
|||||||
@@ -513,7 +513,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
|||||||
override fun onOkClick(dialog: BaseDialog<*>) {
|
override fun onOkClick(dialog: BaseDialog<*>) {
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
if (type == 0) checkPermissions(type)
|
if (type == 0) checkPermissions(type)
|
||||||
else Util.checkLocationPermissionsGpsEnabled(mContext!!, {})
|
else Util.checkLocationPermissionsGpsEnabled(getHomeV2Activity()!!, {})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
okTextResId = R.string.txt_accept,
|
okTextResId = R.string.txt_accept,
|
||||||
@@ -811,7 +811,7 @@ class MapV3Fragment : BaseFragment<FragmentMapV3Binding>(FragmentMapV3Binding::i
|
|||||||
*/
|
*/
|
||||||
private fun checkPermissions(type: Int) {
|
private fun checkPermissions(type: Int) {
|
||||||
getHomeV2Activity()?.apply {
|
getHomeV2Activity()?.apply {
|
||||||
Util.checkBluetoothPermissionsEnabled(mContext, {
|
Util.checkBluetoothPermissionsEnabled(this, {
|
||||||
if (type == 0) {
|
if (type == 0) {
|
||||||
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||||
|
|||||||
@@ -40,7 +40,6 @@ import com.abbidot.tracker.vm.SubscriptionManageViewModel
|
|||||||
import com.baidu.mapapi.utils.DistanceUtil
|
import com.baidu.mapapi.utils.DistanceUtil
|
||||||
import com.clj.fastble.BleManager
|
import com.clj.fastble.BleManager
|
||||||
import com.google.android.gms.maps.model.LatLng
|
import com.google.android.gms.maps.model.LatLng
|
||||||
import com.hjq.permissions.OnPermissionCallback
|
|
||||||
import com.hjq.permissions.XXPermissions
|
import com.hjq.permissions.XXPermissions
|
||||||
import com.hjq.permissions.permission.PermissionLists
|
import com.hjq.permissions.permission.PermissionLists
|
||||||
import com.hjq.permissions.permission.base.IPermission
|
import com.hjq.permissions.permission.base.IPermission
|
||||||
@@ -351,38 +350,55 @@ class Util {
|
|||||||
* 检查权限并获取权限
|
* 检查权限并获取权限
|
||||||
*/
|
*/
|
||||||
fun checkPermissions(
|
fun checkPermissions(
|
||||||
context: Context,
|
activity: BaseActivity<*>,
|
||||||
requestPermissionCallback: RequestPermissionCallback,
|
requestPermissionCallback: RequestPermissionCallback,
|
||||||
permissionTag: String,
|
permissionTag: String,
|
||||||
vararg permissions: IPermission
|
vararg permissions: IPermission
|
||||||
) {
|
) {
|
||||||
XXPermissions.with(context).permissions(permissions)
|
XXPermissions.with(activity).permissions(permissions).request { _, deniedList ->
|
||||||
.request(object : OnPermissionCallback {
|
val allGranted = deniedList.isEmpty()
|
||||||
override fun onGranted(
|
if (allGranted) {
|
||||||
permissions: MutableList<IPermission>, all: Boolean
|
LogUtil.e("获取${permissionTag}权限成功")
|
||||||
) {
|
requestPermissionCallback.onRequestPermissionSuccess()
|
||||||
if (all) {
|
} else {
|
||||||
LogUtil.e("获取${permissionTag}权限成功")
|
val doNotAskAgain =
|
||||||
requestPermissionCallback.onRequestPermissionSuccess()
|
XXPermissions.isDoNotAskAgainPermissions(activity, deniedList)
|
||||||
} else {
|
if (doNotAskAgain) {
|
||||||
LogUtil.e("获取部分权限成功,但部分权限未正常授予")
|
LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
||||||
requestPermissionCallback.onRequestPermissionFail()
|
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||||
}
|
XXPermissions.startPermissionActivity(activity, deniedList)
|
||||||
|
} else {
|
||||||
|
LogUtil.e("获取部分权限成功,但部分权限未正常授予")
|
||||||
|
requestPermissionCallback.onRequestPermissionFail()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDenied(
|
// object : OnPermissionCallback {
|
||||||
permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
// override fun onGranted(
|
||||||
) {
|
// permissions: MutableList<IPermission>, all: Boolean
|
||||||
if (doNotAskAgain) {
|
// ) {
|
||||||
LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
// if (all) {
|
||||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
//
|
||||||
XXPermissions.startPermissionActivity(context, permissions)
|
// } else {
|
||||||
} else {
|
// LogUtil.e("获取部分权限成功,但部分权限未正常授予")
|
||||||
LogUtil.e("获取${permissionTag}权限失败")
|
// requestPermissionCallback.onRequestPermissionFail()
|
||||||
requestPermissionCallback.onRequestPermissionFail()
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//
|
||||||
})
|
// override fun onDenied(
|
||||||
|
// permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||||
|
// ) {
|
||||||
|
// if (doNotAskAgain) {
|
||||||
|
// LogUtil.e("被永久拒绝授权,请手动授予定位权限")
|
||||||
|
// // 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||||
|
// XXPermissions.startPermissionActivity(context, permissions)
|
||||||
|
// } else {
|
||||||
|
// LogUtil.e("获取${permissionTag}权限失败")
|
||||||
|
// requestPermissionCallback.onRequestPermissionFail()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -647,18 +663,18 @@ class Util {
|
|||||||
* 检查蓝牙权限和开关
|
* 检查蓝牙权限和开关
|
||||||
*/
|
*/
|
||||||
fun checkBluetoothPermissionsEnabled(
|
fun checkBluetoothPermissionsEnabled(
|
||||||
context: Context,
|
activity: BaseActivity<*>,
|
||||||
successAuthorize: () -> Unit,
|
successAuthorize: () -> Unit,
|
||||||
isShowToast: Boolean = true,
|
isShowToast: Boolean = true,
|
||||||
isCheckBleOpen: Boolean = true
|
isCheckBleOpen: Boolean = true
|
||||||
) {
|
) {
|
||||||
checkPermissions(
|
checkPermissions(
|
||||||
context,
|
activity,
|
||||||
object : RequestPermissionCallback {
|
object : RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
//判断蓝牙是否打开
|
//判断蓝牙是否打开
|
||||||
if (isCheckBleOpen && !SRBleUtil.instance.isBleEnable(context)) {
|
if (isCheckBleOpen && !SRBleUtil.instance.isBleEnable(activity)) {
|
||||||
SRBleUtil.instance.openBluetooth(context)
|
SRBleUtil.instance.openBluetooth(activity)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
successAuthorize()
|
successAuthorize()
|
||||||
@@ -680,18 +696,18 @@ class Util {
|
|||||||
* 检查定位权限和GPS开关
|
* 检查定位权限和GPS开关
|
||||||
*/
|
*/
|
||||||
fun checkLocationPermissionsGpsEnabled(
|
fun checkLocationPermissionsGpsEnabled(
|
||||||
context: Context, successAuthorize: () -> Unit, isShowToast: Boolean = true
|
activity: BaseActivity<*>, successAuthorize: () -> Unit, isShowToast: Boolean = true
|
||||||
) {
|
) {
|
||||||
val locationManager =
|
val locationManager =
|
||||||
context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
activity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
|
||||||
checkPermissions(
|
checkPermissions(
|
||||||
context,
|
activity,
|
||||||
object : RequestPermissionCallback {
|
object : RequestPermissionCallback {
|
||||||
override fun onRequestPermissionSuccess() {
|
override fun onRequestPermissionSuccess() {
|
||||||
//判断GPS是否打开
|
//判断GPS是否打开
|
||||||
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
|
||||||
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
|
||||||
context.startActivity(intent)
|
activity.startActivity(intent)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
successAuthorize()
|
successAuthorize()
|
||||||
|
|||||||
@@ -78,10 +78,8 @@ import com.daimajia.androidanimations.library.YoYo.YoYoString
|
|||||||
import com.google.android.flexbox.FlexboxLayoutManager
|
import com.google.android.flexbox.FlexboxLayoutManager
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.hjq.permissions.OnPermissionCallback
|
|
||||||
import com.hjq.permissions.XXPermissions
|
import com.hjq.permissions.XXPermissions
|
||||||
import com.hjq.permissions.permission.PermissionLists
|
import com.hjq.permissions.permission.PermissionLists
|
||||||
import com.hjq.permissions.permission.base.IPermission
|
|
||||||
import com.hjq.toast.Toaster
|
import com.hjq.toast.Toaster
|
||||||
import com.huantansheng.easyphotos.EasyPhotos
|
import com.huantansheng.easyphotos.EasyPhotos
|
||||||
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
|
||||||
@@ -575,34 +573,53 @@ class ViewUtil private constructor() {
|
|||||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
|
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
|
||||||
|
|
||||||
XXPermissions.with(activity).permission(PermissionLists.getReadMediaImagesPermission())
|
XXPermissions.with(activity).permission(PermissionLists.getReadMediaImagesPermission())
|
||||||
.permission(PermissionLists.getCameraPermission())
|
.permission(PermissionLists.getCameraPermission()).request { _, deniedList ->
|
||||||
.request(object : OnPermissionCallback {
|
val allGranted = deniedList.isEmpty()
|
||||||
override fun onGranted(permissions: MutableList<IPermission>, allGranted: Boolean) {
|
if (allGranted) {
|
||||||
if (allGranted) {
|
LogUtil.e("获取READ_MEDIA_IMAGES权限成功")
|
||||||
LogUtil.e("获取READ_MEDIA_IMAGES权限成功")
|
EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance)
|
||||||
EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance)
|
.setFileProviderAuthority(FileUtil.FILE_PROVIDER).setCount(count)
|
||||||
.setFileProviderAuthority(FileUtil.FILE_PROVIDER).setCount(count)
|
.setPuzzleMenu(false).setCleanMenu(false).start(requestCode)
|
||||||
.setPuzzleMenu(false).setCleanMenu(false).start(requestCode)
|
//activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||||
//activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
} else {
|
||||||
|
val doNotAskAgain =
|
||||||
|
XXPermissions.isDoNotAskAgainPermissions(activity, deniedList)
|
||||||
|
if (doNotAskAgain) {
|
||||||
|
LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
||||||
|
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||||
|
XXPermissions.startPermissionActivity(activity, deniedList)
|
||||||
} else {
|
} else {
|
||||||
LogUtil.e("获取READ_MEDIA_IMAGES权限,但部分权限未正常授予")
|
LogUtil.e("获取READ_MEDIA_IMAGES权限,但部分权限未正常授予")
|
||||||
Toaster.show(R.string.txt_permissions_fail_tips)
|
Toaster.show(R.string.txt_permissions_fail_tips)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onDenied(
|
// override fun onGranted(permissions: MutableList<IPermission>, allGranted: Boolean) {
|
||||||
permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
// if (allGranted) {
|
||||||
) {
|
// LogUtil.e("获取READ_MEDIA_IMAGES权限成功")
|
||||||
if (doNotAskAgain) {
|
// EasyPhotos.createAlbum(activity, true, false, CoilEngine.instance)
|
||||||
LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
// .setFileProviderAuthority(FileUtil.FILE_PROVIDER).setCount(count)
|
||||||
// 如果是被永久拒绝就跳转到应用权限系统设置页面
|
// .setPuzzleMenu(false).setCleanMenu(false).start(requestCode)
|
||||||
XXPermissions.startPermissionActivity(activity, permissions)
|
// //activity.overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left)
|
||||||
} else {
|
// } else {
|
||||||
LogUtil.e("获取READ_MEDIA_IMAGES权限失败")
|
// LogUtil.e("获取READ_MEDIA_IMAGES权限,但部分权限未正常授予")
|
||||||
Toaster.show(R.string.txt_permissions_fail_tips)
|
// Toaster.show(R.string.txt_permissions_fail_tips)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
//
|
||||||
|
// override fun onDenied(
|
||||||
|
// permissions: MutableList<IPermission>, doNotAskAgain: Boolean
|
||||||
|
// ) {
|
||||||
|
// if (doNotAskAgain) {
|
||||||
|
// LogUtil.e("READ_MEDIA_IMAGES被永久拒绝授权,请手动授予定位权限")
|
||||||
|
// // 如果是被永久拒绝就跳转到应用权限系统设置页面
|
||||||
|
// XXPermissions.startPermissionActivity(activity, permissions)
|
||||||
|
// } else {
|
||||||
|
// LogUtil.e("获取READ_MEDIA_IMAGES权限失败")
|
||||||
|
// Toaster.show(R.string.txt_permissions_fail_tips)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import com.abbidot.baselibrary.constant.EventName
|
|||||||
import com.abbidot.baselibrary.eventbus.XEventBus
|
import com.abbidot.baselibrary.eventbus.XEventBus
|
||||||
import com.abbidot.baselibrary.util.AppUtils
|
import com.abbidot.baselibrary.util.AppUtils
|
||||||
import com.abbidot.baselibrary.util.LogUtil
|
import com.abbidot.baselibrary.util.LogUtil
|
||||||
|
import com.abbidot.tracker.base.BaseActivity
|
||||||
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
import com.abbidot.tracker.bean.BleTrackDeviceBean
|
||||||
import com.abbidot.tracker.bean.ReceiveDeviceData
|
import com.abbidot.tracker.bean.ReceiveDeviceData
|
||||||
import com.abbidot.tracker.util.SocketUtilManageV2
|
import com.abbidot.tracker.util.SocketUtilManageV2
|
||||||
@@ -132,6 +133,7 @@ class SRBleUtil private constructor() {
|
|||||||
fun openBluetooth(context: Context) {
|
fun openBluetooth(context: Context) {
|
||||||
// BleManager.getInstance().enableBluetooth()
|
// BleManager.getInstance().enableBluetooth()
|
||||||
val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
|
val intent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
|
||||||
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
context.startActivity(intent)
|
context.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -298,9 +300,7 @@ class SRBleUtil private constructor() {
|
|||||||
override fun onNotifyFailure(exception: BleException?) {
|
override fun onNotifyFailure(exception: BleException?) {
|
||||||
LogUtil.e("打开日志上报通道失败:${bleDevice.mac},$exception")
|
LogUtil.e("打开日志上报通道失败:${bleDevice.mac},$exception")
|
||||||
openG40LogReportNotify(
|
openG40LogReportNotify(
|
||||||
bleDevice,
|
bleDevice, logG40ServiceUUID, logG40NotifyCharacteristicUUID
|
||||||
logG40ServiceUUID,
|
|
||||||
logG40NotifyCharacteristicUUID
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -474,10 +474,10 @@ class SRBleUtil private constructor() {
|
|||||||
/**
|
/**
|
||||||
*发送设备开启关闭led蓝牙指令
|
*发送设备开启关闭led蓝牙指令
|
||||||
*/
|
*/
|
||||||
fun setBleLedSwitch(context: Context, bleDevice: BleDevice?, mode: Int) {
|
fun setBleLedSwitch(activity: BaseActivity<*>, bleDevice: BleDevice?, mode: Int) {
|
||||||
//判断是否有蓝牙连接
|
//判断是否有蓝牙连接
|
||||||
if (BleManager.getInstance().isConnected(bleDevice)) {
|
if (BleManager.getInstance().isConnected(bleDevice)) {
|
||||||
Util.checkBluetoothPermissionsEnabled(context, {
|
Util.checkBluetoothPermissionsEnabled(activity, {
|
||||||
writeData(
|
writeData(
|
||||||
bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_WRITE, mode)
|
bleDevice, SRBleCmdUtil.instance.ledState(SRBleCmdUtil.CMD_WRITE, mode)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -326,7 +326,12 @@ public final class BrowserView extends WebView {
|
|||||||
//
|
//
|
||||||
DialogUtils.Companion.showEditTextDialog(mWebView.getContext(), message, defaultValue
|
DialogUtils.Companion.showEditTextDialog(mWebView.getContext(), message, defaultValue
|
||||||
, new GetResultCallback() {
|
, new GetResultCallback() {
|
||||||
@Override
|
@Override
|
||||||
|
public void onErrorCode() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void onRequestError(@Nullable String exceptionCode) {
|
public void onRequestError(@Nullable String exceptionCode) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -350,7 +355,7 @@ public final class BrowserView extends WebView {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> callback,
|
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> callback,
|
||||||
FileChooserParams params) {
|
FileChooserParams params) {
|
||||||
Util.Companion.checkPermissions(mWebView.getContext(),
|
Util.Companion.checkPermissions((BaseActivity) (mWebView.getContext()),
|
||||||
new Util.RequestPermissionCallback() {
|
new Util.RequestPermissionCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionSuccess() {
|
public void onRequestPermissionSuccess() {
|
||||||
|
|||||||
@@ -73,6 +73,14 @@
|
|||||||
android:text="@string/txt_led_setting"
|
android:text="@string/txt_led_setting"
|
||||||
android:textSize="@dimen/textSize14"
|
android:textSize="@dimen/textSize14"
|
||||||
app:typeface="@string/roboto_regular_font" />
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
|
style="@style/my_TextView_style_v2"
|
||||||
|
android:layout_marginTop="@dimen/dp_8"
|
||||||
|
android:drawableStart="@drawable/icon_permission_error_check_svg"
|
||||||
|
android:drawablePadding="@dimen/dp_8"
|
||||||
|
android:text="@string/txt_auto_renew_cancel"
|
||||||
|
android:textSize="@dimen/textSize14"
|
||||||
|
app:typeface="@string/roboto_regular_font" />
|
||||||
|
|
||||||
<com.abbidot.tracker.widget.TypefaceTextView
|
<com.abbidot.tracker.widget.TypefaceTextView
|
||||||
style="@style/my_TextView_style_v2"
|
style="@style/my_TextView_style_v2"
|
||||||
|
|||||||
@@ -1078,5 +1078,6 @@
|
|||||||
<string name="map_baidu_map">Baidu Map</string>
|
<string name="map_baidu_map">Baidu Map</string>
|
||||||
<string name="txt_time_line">Timeline</string>
|
<string name="txt_time_line">Timeline</string>
|
||||||
<string name="txt_phone_close_device">Keep phone close to device</string>
|
<string name="txt_phone_close_device">Keep phone close to device</string>
|
||||||
|
<string name="txt_auto_renew_cancel">Auto-Renew: Cancel</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -43,9 +43,9 @@ dependencies {
|
|||||||
|
|
||||||
// Android官方库
|
// Android官方库
|
||||||
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
api "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
api 'androidx.core:core-ktx:1.13.1'
|
api 'androidx.core:core-ktx:1.16.0'
|
||||||
api 'androidx.appcompat:appcompat:1.7.0'
|
api 'androidx.appcompat:appcompat:1.7.1'
|
||||||
api 'com.google.android.material:material:1.10.0'
|
api 'com.google.android.material:material:1.13.0'
|
||||||
|
|
||||||
//SharedPreferences的替代https://github.com/Tencent/MMKV
|
//SharedPreferences的替代https://github.com/Tencent/MMKV
|
||||||
implementation 'com.tencent:mmkv-static:2.4.0'
|
implementation 'com.tencent:mmkv-static:2.4.0'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||||
buildscript {
|
buildscript {
|
||||||
ext.kotlin_version = '2.2.0'
|
ext.kotlin_version = '2.3.10'
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@@ -13,14 +13,12 @@ buildscript {
|
|||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:8.11.1'
|
classpath 'com.android.tools.build:gradle:8.11.1'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'com.google.gms:google-services:4.4.2'
|
classpath 'com.google.gms:google-services:4.4.4'
|
||||||
// classpath 'com.google.dagger:hilt-android-gradle-plugin:2.46.1'
|
// classpath 'com.google.dagger:hilt-android-gradle-plugin:2.46.1'
|
||||||
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.57'
|
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.57.2'
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|
||||||
// fcm
|
|
||||||
// classpath 'com.google.gms:google-services:4.3.4'
|
|
||||||
// hms
|
// hms
|
||||||
// classpath 'com.huawei.agconnect:agcp:1.4.1.300'
|
// classpath 'com.huawei.agconnect:agcp:1.4.1.300'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||||
implementation 'com.google.android.material:material:1.10.0'
|
implementation 'com.google.android.material:material:1.13.0'
|
||||||
implementation 'androidx.recyclerview:recyclerview:1.3.1'
|
implementation 'androidx.recyclerview:recyclerview:1.4.0'
|
||||||
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
|
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
|
||||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
implementation 'com.google.code.gson:gson:2.13.1'
|
implementation 'com.google.code.gson:gson:2.13.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceCompatibility = "7"
|
sourceCompatibility = "7"
|
||||||
|
|||||||
Reference in New Issue
Block a user