-
Notifications
You must be signed in to change notification settings - Fork 2
/
LocationActivity.kt
121 lines (100 loc) · 3.86 KB
/
LocationActivity.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package the.one.test
import android.app.AlertDialog
import android.content.DialogInterface
import android.graphics.Color
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.view.View
import com.amap.api.location.AMapLocation
import com.amap.api.location.AMapLocationClient
import com.amap.api.location.AMapLocationListener
import com.hjq.permissions.Permission
import com.hjq.permissions.XXPermissions
import com.qmuiteam.qmui.widget.QMUITopBarLayout
import com.theone.mvvm.core.base.activity.BaseCoreActivity
import com.theone.mvvm.core.base.callback.CoreOnPermission
import com.theone.mvvm.ext.qmui.showMsgDialog
import the.one.location.TheLocationManager
import the.one.location.getLog
import the.one.test.databinding.ActivityMainBinding
class LocationActivity : BaseCoreActivity<LocationViewModel, ActivityMainBinding>(),
AMapLocationListener {
private var mLocationManager: TheLocationManager? = null
override fun isExitPage(): Boolean = true
override fun QMUITopBarLayout.initTopBar() {
setTitle("定位测试")
}
override fun initView(root: View) {
if(XXPermissions.hasPermission(this,Permission.Group.LOCATION)){
requestLocation()
}else{
privacyCompliance()
}
}
private fun privacyCompliance() {
AMapLocationClient.updatePrivacyShow(this, true, true)
val tips = "依据最新的监管要求更新了${getString(R.string.app_name)}《隐私权政策》,特向您说明如下:" +
"\n1.为向您提供交易相关基本功能,我们会收集、使用必要的信息;" +
"\n2.基于您的明示授权,我们可能会获取您的位置(为您提供附近的商品、店铺及优惠资讯等)等信息,您有权拒绝或取消授权;" +
"\n3.我们会采取业界先进的安全措施保护您的信息安全;" +
"\n4.未经您同意,我们不会从第三方处获取、共享或向提供您的信息;"
val target = "隐私权政策"
val start = tips.indexOf(target)
val spannable =
SpannableStringBuilder(tips)
spannable.setSpan(
ForegroundColorSpan(Color.BLUE),
start,
start+target.length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
showMsgDialog("温馨提示",spannable, listener = {
dialog,index->
dialog.dismiss()
if(index>0){
AMapLocationClient.updatePrivacyAgree(this, true)
requestPermission()
}else{
AMapLocationClient.updatePrivacyAgree(this, false)
}
})
}
private fun requestPermission() {
XXPermissions.with(this)
.permission(Permission.Group.LOCATION)
.request(object : CoreOnPermission(this) {
override fun hasPermission(granted: MutableList<String>?, all: Boolean) {
if (all) {
requestLocation()
} else {
requestPermission()
}
}
})
}
private fun requestLocation() {
if(null == mLocationManager){
mLocationManager = TheLocationManager.getInstance().init(this, this)
}
showLoading("定位中")
mLocationManager?.start()
}
override fun onLocationChanged(location: AMapLocation?) {
hideLoading()
mLocationManager?.stop()
location?.let {
getViewModel().address.set(it.getLog())
}
}
override fun onDestroy() {
super.onDestroy()
mLocationManager?.release()
}
override fun getBindingClick() = ClickProxy()
inner class ClickProxy {
fun start() {
requestPermission()
}
}
}