Commit 0c01e0cd authored by shiyl's avatar shiyl

登录页迁移到BSetting模块

parent 818bab5a
...@@ -71,7 +71,7 @@ class AppConfig { ...@@ -71,7 +71,7 @@ class AppConfig {
const val userProtocol = "https://www.appgc.cn/plugins/privacy/content?type=mp&appId=1080334&ver=210601" const val userProtocol = "https://www.appgc.cn/plugins/privacy/content?type=mp&appId=1080334&ver=210601"
// 隐私政策 // 隐私政策
const val privacyPolicyStatement = "https://www.appgc.cn/plugins/privacy/content?type=privacy&appId=1080334&ver=210601" const val privacyPolicy = "https://www.appgc.cn/plugins/privacy/content?type=privacy&appId=1080334&ver=210601"
// 我的钱包 - 常见问题 // 我的钱包 - 常见问题
const val commonProblem = "https://www.appgc.cn/plugins/privacy/content?type=privacy&appId=1080334&ver=210601" const val commonProblem = "https://www.appgc.cn/plugins/privacy/content?type=privacy&appId=1080334&ver=210601"
......
...@@ -7,8 +7,12 @@ package com.yidian.bcommon.services ...@@ -7,8 +7,12 @@ package com.yidian.bcommon.services
class ZapServiceActionConstants { class ZapServiceActionConstants {
companion object { companion object {
// 生活号列表服务 - 请求生活号列表action // 请求生活号列表
const val LifeNumberListServiceRequestList = "LifeNumberListServiceRequestList" const val ActionRequestList = "ActionRequestList"
// 请求短信验证码
const val ActionRequestSmsCode = "ActionRequestSmsCode"
// 通过服务清除内存中的认证数据
const val ActionClearAuthenticationData = "ActionClearAuthenticationData"
} }
} }
package com.yidian.shenghuoquan.newscontent.utils package com.yidian.bcommon.utils
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.graphics.Color import android.graphics.Color
......
package com.yidian.shenghuoquan.newscontent.utils package com.yidian.bcommon.utils
import com.orhanobut.hawk.Hawk import com.orhanobut.hawk.Hawk
import com.yidian.bcommon.constant.HawkConfig import com.yidian.bcommon.constant.HawkConfig
......
package com.yidian.shenghuoquan.newscontent.utils package com.yidian.bcommon.utils
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
...@@ -12,4 +12,4 @@ abstract class TextWatcherAdapter: TextWatcher { ...@@ -12,4 +12,4 @@ abstract class TextWatcherAdapter: TextWatcher {
override fun afterTextChanged(s: Editable?) { override fun afterTextChanged(s: Editable?) {
} }
} }
\ No newline at end of file
package com.yidian.bcommon.webview package com.yidian.bcommon.webview
import android.content.Context
import android.content.Intent
import android.os.Build import android.os.Build
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebSettings import android.webkit.WebSettings
...@@ -52,8 +54,12 @@ class PublicWebViewActivity : BaseMvvmActivity<ActivityPublicWebViewBinding, Pub ...@@ -52,8 +54,12 @@ class PublicWebViewActivity : BaseMvvmActivity<ActivityPublicWebViewBinding, Pub
} }
} }
// override fun onDestroy() { companion object {
// super.onDestroy() fun startWebViewActivity(context: Context, url: String) {
// binding.webView.destroy() val intent = Intent(context, PublicWebViewActivity::class.java)
// } intent.putExtra("url", url)
context.startActivity(intent)
}
}
} }
...@@ -69,7 +69,7 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>() { ...@@ -69,7 +69,7 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>() {
val loginStatus = Hawk.get(HawkConfig.LoginStatus, false) val loginStatus = Hawk.get(HawkConfig.LoginStatus, false)
if (loginStatus) { if (loginStatus) {
// 已登录请求生活号列表 // 已登录请求生活号列表
ZapTicket(ZapServiceNameConstants.LifeNumberListServiceName).withAction(ZapServiceActionConstants.LifeNumberListServiceRequestList) ZapTicket(ZapServiceNameConstants.LifeNumberListServiceName).withAction(ZapServiceActionConstants.ActionRequestList)
.onResult { result -> .onResult { result ->
// 请求生活号列表成功,关闭启动页 // 请求生活号列表成功,关闭启动页
if (result.result as Boolean) { if (result.result as Boolean) {
...@@ -141,7 +141,7 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>() { ...@@ -141,7 +141,7 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
val intent = Intent(this@FlashActivity, PublicWebViewActivity::class.java) val intent = Intent(this@FlashActivity, PublicWebViewActivity::class.java)
intent.putExtra("url", AppConfig.privacyPolicyStatement) intent.putExtra("url", AppConfig.privacyPolicy)
startActivity(intent) startActivity(intent)
} }
}, 26, 32, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) }, 26, 32, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
......
...@@ -2,4 +2,8 @@ ...@@ -2,4 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.bsetting"> package="com.yidian.shenghuoquan.bsetting">
<application>
<activity android:name=".ui.login.LoginLifeCircleActivity" />
</application>
</manifest> </manifest>
\ No newline at end of file
package com.yidian.shenghuoquan.bsetting.app
import android.content.Intent
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.news.util.ProcessUtil
import com.yidian.xpage.XPageManager
import com.yidian.xpage.node.XPageHandler
import com.yidian.xpage.node.XPageNode
import com.yidian.xpage.node.XPageNodePageType
import com.yidian.yac.core.core.YacModuleSpec
@YacModuleSpec
class BSettingApplication : YdBaseApplication() {
override fun onCreate() {
super.onCreate()
if (ProcessUtil.isMainProcess(this)) {
registerXPage()
initService()
}
}
private fun registerXPage() {
ClassMapUtil.xPageNodeMap.forEach {
val node = XPageNode(it.key, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, it.value)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
})
XPageManager.registeredNode(node)
}
}
private fun initService() {
// Zap.addService(SelectCategoryService.serviceName, SelectCategoryService())
// Zap.addService(GoodsPublishService.SERVICE_NAME, GoodsPublishService())
}
}
package com.yidian.shenghuoquan.bsetting.app package com.yidian.shenghuoquan.bsetting.app
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.shenghuoquan.bsetting.ui.login.LoginLifeCircleActivity
/** /**
* 注册XPageNode工具类 * 注册XPageNode工具类
*/ */
object ClassMapUtil { object ClassMapUtil {
// val xPageNodeMap = mapOf( val xPageNodeMap = mapOf(
// XRouterPathConstants.Companion.FLASH to com.yidian.shenghuoquan.broot.ui.FlashActivity::class.java,// 启动页 XRouterPathConstants.Companion.LOGIN_LIFE_CIRCLE to LoginLifeCircleActivity::class.java,// 启动页
// XRouterPathConstants.Companion.COMMODITY_MANAGEMENT to CommodityManagementActivity::class.java, // 商品管理 // XRouterPathConstants.Companion.COMMODITY_MANAGEMENT to CommodityManagementActivity::class.java, // 商品管理
// ) )
} }
package com.yidian.shenghuoquan.bsetting.app
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.yac.core.core.YacModuleSpec
@YacModuleSpec
class CommodityApplication : YdBaseApplication() {
// override fun onCreate() {
// super.onCreate()
// if (ProcessUtil.isMainProcess(this)) {
// registerXPage()
// initService()
// }
// }
//
// private fun registerXPage() {
// ClassMapUtil.xPageNodeMap.forEach {
// val node = XPageNode(it.key, XPageNodePageType.NATIVE, object : XPageHandler {
// override fun handler(params: Map<String, Any?>?) {
// val intent = Intent()
// if (params != null) {
// intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
// }
// intent.setClass(context, it.value)
// intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
// context.startActivity(intent)
// }
// })
// XPageManager.registeredNode(node)
// }
// }
//
// private fun initService() {
//// Zap.addService(SelectCategoryService.serviceName, SelectCategoryService())
//// Zap.addService(GoodsPublishService.SERVICE_NAME, GoodsPublishService())
// }
}
package com.yidian.shenghuoquan.bsetting.bean
/**
* 手机号登录
*/
class MobileLoginBean(var request: Request, var response: Response) {
data class Request(var mobile: String?, var code: String?)
data class Response(
val app_id: Int,
val app_name: String,
val avatar: String,
val city_id: String,
val city_name: String,
val gender: String,
val gender_text: String,
val mobile: String,
val nick_name: String,
val user_id: Long
)
}
package com.yidian.shenghuoquan.bsetting.http
import com.yidian.bcommon.http.HttpParamsUtils
import com.yidian.bcommon.http.HttpResult
import com.yidian.bcommon.http.HttpResultSubscriber
import com.yidian.bcommon.http.TransformUtil
import com.yidian.http.ServiceFactory
import com.yidian.shenghuoquan.bsetting.bean.MobileLoginBean
object SettingRemoteDataSource {
private var api = ServiceFactory.getInstance().createService(SettingService::class.java)
/**
* 手机号登录
*/
fun getMobileLogin(requestParams: HashMap<String, String?>, callback: ((MobileLoginBean.Response?) -> Unit)? = null) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
api
.mobileLogin(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<MobileLoginBean.Response?>() {
override fun onSuccess(result: HttpResult<MobileLoginBean.Response?>?) {
callback?.invoke(result?.result)
}
override fun onFailure(result: HttpResult<MobileLoginBean.Response?>?) {
}
})
}
}
package com.yidian.shenghuoquan.bsetting.http
import com.yidian.bcommon.http.HttpResult
import io.reactivex.rxjava3.core.Observable
import retrofit2.http.GET
import retrofit2.http.QueryMap
interface SettingService {
private companion object {
const val mobileLogin = "/user/user/login"
// const val sendMsgCode = "/sms/sms/send_code"
const val userLogout = "/user/user/logout"
}
/**
* 手机号登录
*/
@GET(mobileLogin)
fun mobileLogin(@QueryMap commonParams: Map<String, String>, @QueryMap params: Map<String, String?>): Observable<HttpResult<Any?>>
// /**
// * 发送验证码
// */
// @GET(sendMsgCode)
// fun sendMsgCode(@QueryMap commonParams: Map<String, String>, @QueryMap params: Map<String, String?>): Observable<HttpResult<Any?>>
/**
* 退出登录
*/
@GET(userLogout)
fun userLogout(@QueryMap commonParams: Map<String, String>, @QueryMap params: Map<String, String?>): Observable<HttpResult<Any?>>
}
...@@ -2,4 +2,8 @@ ...@@ -2,4 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yidian.shenghuoquan.bsetting"> package="com.yidian.shenghuoquan.bsetting">
<application>
<activity android:name=".ui.login.LoginLifeCircleActivity" />
</application>
</manifest> </manifest>
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:type="linear" android:startColor="#FF1751F1"
android:endColor="#FF3693FF" android:angle="0"/>
<corners android:radius="22dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/color_1852F1" />
<size
android:width="@dimen/dp2"
android:height="@dimen/dp19" />
</shape>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/color_FFFFFFFF" android:background="@color/white"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--用户协议勾选框-->
<style name="protocol_checkboxBg" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/protocol_checkbox_bg</item>
</style>
</resources>
\ No newline at end of file
...@@ -12,10 +12,6 @@ ...@@ -12,10 +12,6 @@
<activity <activity
android:name=".ui.auth.LifeAccountCreateCompleteActivity" android:name=".ui.auth.LifeAccountCreateCompleteActivity"
android:theme="@style/Transparent" /> android:theme="@style/Transparent" />
<activity
android:name=".ui.ProtocolActivity"
android:theme="@style/Transparent" />
<activity android:name=".ui.LoginLifeCircleActivity" />
<activity <activity
android:name=".ui.store.StoreManagementActivity" android:name=".ui.store.StoreManagementActivity"
android:theme="@style/Transparent" /> android:theme="@style/Transparent" />
......
...@@ -24,7 +24,6 @@ import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_MANAG ...@@ -24,7 +24,6 @@ import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_MANAG
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_MY_STAFF import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_MY_STAFF
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_STAFF_INFO import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_STAFF_INFO
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_STAFF_MANAGE import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PERSONAL_STAFF_MANAGE
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PROTOCOL
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.STORE_MANAGEMENT import com.yidian.bcommon.constant.XRouterPathConstants.Companion.STORE_MANAGEMENT
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.SYSTEM_SETTING import com.yidian.bcommon.constant.XRouterPathConstants.Companion.SYSTEM_SETTING
import com.yidian.bcommon.services.ZapServiceNameConstants import com.yidian.bcommon.services.ZapServiceNameConstants
...@@ -33,8 +32,6 @@ import com.yidian.nightmode.util.NightModeUtil ...@@ -33,8 +32,6 @@ import com.yidian.nightmode.util.NightModeUtil
import com.yidian.shenghuoquan.newscontent.personnel.ui.* import com.yidian.shenghuoquan.newscontent.personnel.ui.*
import com.yidian.shenghuoquan.newscontent.service.LifeNumberListService import com.yidian.shenghuoquan.newscontent.service.LifeNumberListService
import com.yidian.shenghuoquan.newscontent.service.SelectStoreService import com.yidian.shenghuoquan.newscontent.service.SelectStoreService
import com.yidian.shenghuoquan.newscontent.ui.LoginLifeCircleActivity
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.shenghuoquan.newscontent.ui.auth.* import com.yidian.shenghuoquan.newscontent.ui.auth.*
import com.yidian.shenghuoquan.newscontent.ui.center.* import com.yidian.shenghuoquan.newscontent.ui.center.*
import com.yidian.shenghuoquan.newscontent.ui.setting.FeedbackActivity import com.yidian.shenghuoquan.newscontent.ui.setting.FeedbackActivity
...@@ -66,17 +63,6 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -66,17 +63,6 @@ class NewsContentApplication : YdBaseApplication() {
private fun registerXPage() { private fun registerXPage() {
XPageManager.registeredNodes( XPageManager.registeredNodes(
arrayListOf( arrayListOf(
XPageNode(LOGIN_LIFE_CIRCLE, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, LoginLifeCircleActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}),
XPageNode(STORE_MANAGEMENT, XPageNodePageType.NATIVE, object : XPageHandler { XPageNode(STORE_MANAGEMENT, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) { override fun handler(params: Map<String, Any?>?) {
val intent = Intent() val intent = Intent()
...@@ -187,17 +173,6 @@ class NewsContentApplication : YdBaseApplication() { ...@@ -187,17 +173,6 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent) context.startActivity(intent)
} }
}), }),
XPageNode(PROTOCOL, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, ProtocolActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
}
}),
XPageNode(CHOOSE_CAREER, XPageNodePageType.NATIVE, object : XPageHandler { XPageNode(CHOOSE_CAREER, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) { override fun handler(params: Map<String, Any?>?) {
val intent = Intent() val intent = Intent()
......
...@@ -56,7 +56,7 @@ class ApiService { ...@@ -56,7 +56,7 @@ class ApiService {
} }
// 获取短信验证码 // 获取短信验证码
fun sendMsgCode(apiCallback: IMobileLoginCallback, requestParams: HashMap<String, String?>) { fun sendMsgCode(requestParams: HashMap<String, String?>, callback: ((Boolean) -> Unit)? = null) {
val timeStamp = System.currentTimeMillis() val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp) val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp) val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
...@@ -65,30 +65,10 @@ class ApiService { ...@@ -65,30 +65,10 @@ class ApiService {
.compose(TransformUtil.defaultSchedulers()) .compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() { .subscribe(object : HttpResultSubscriber<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) { override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.sendSmsCodeCallBack(result) callback?.invoke(true)
} }
override fun onFailure(result: HttpResult<Any?>?) { override fun onFailure(result: HttpResult<Any?>?) {
apiCallback.sendSmsCodeCallBack(result)
}
})
}
// 手机号登录接口
fun mobileLogin(apiCallback: IMobileLoginCallback, requestParams: HashMap<String, String?>) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
ServiceFactory.getInstance().createService(CommonService::class.java)
.mobileLogin(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<MobileLoginBean.Response?>() {
override fun onSuccess(result: HttpResult<MobileLoginBean.Response?>?) {
apiCallback.mobileLoginCallBack(result)
}
override fun onFailure(result: HttpResult<MobileLoginBean.Response?>?) {
apiCallback.mobileLoginCallBack(result)
} }
}) })
} }
......
package com.yidian.shenghuoquan.newscontent.http.httpbean
import com.yidian.bcommon.http.HttpResult
interface ILoginCallback {
fun sendSmsCodeCallBack(t: HttpResult<Any?>?)
fun mobileLoginCallBack(t: HttpResult<MobileLoginBean.Response?>?)
fun logoutCallBack(t: HttpResult<Any?>?)
}
package com.yidian.shenghuoquan.newscontent.http.httpbean
import com.yidian.bcommon.http.HttpResult
interface IMobileLoginCallback {
fun sendSmsCodeCallBack(t: HttpResult<Any?>?)
fun mobileLoginCallBack(t: HttpResult<MobileLoginBean.Response?>?)
}
package com.yidian.shenghuoquan.newscontent.http.httpbean
class MobileLoginBean(var request: Request, var response: Response) {
data class Request(var mobile: String?, var code: String?)
data class Response(
val app_id: Int,
val app_name: String,
val avatar: String,
val city_id: String,
val city_name: String,
val gender: String,
val gender_text: String,
val mobile: String,
val nick_name: String,
val user_id: Long
)
}
\ No newline at end of file
...@@ -13,8 +13,8 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityAddStaffBinding ...@@ -13,8 +13,8 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityAddStaffBinding
import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSource import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSource
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAddUserCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAddUserCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalGetSmsCodeCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalGetSmsCodeCallBack
import com.yidian.shenghuoquan.newscontent.utils.CountDownTimerUtils import com.yidian.bcommon.utils.CountDownTimerUtils
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
import com.yidian.utils.ToastUtil import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
......
...@@ -25,11 +25,11 @@ import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSour ...@@ -25,11 +25,11 @@ import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSour
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalChangeAccountCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalChangeAccountCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalCheckSmsCodeCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalCheckSmsCodeCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalGetSmsCodeCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalGetSmsCodeCallBack
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.CountDownTimerUtils import com.yidian.bcommon.utils.CountDownTimerUtils
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
import com.yidian.bcommon.webview.PublicWebViewActivity
import com.yidian.utils.ToastUtil import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
...@@ -178,18 +178,12 @@ class ManagerChangeActivity : BaseActivity<ActivityManagerChangeBinding>() { ...@@ -178,18 +178,12 @@ class ManagerChangeActivity : BaseActivity<ActivityManagerChangeBinding>() {
it.setSpan(ForegroundColorSpan(Color.parseColor("#1852F1")), 28, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) it.setSpan(ForegroundColorSpan(Color.parseColor("#1852F1")), 28, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
it.setSpan(object : ClickableSpan() { it.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
val map = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(this@ManagerChangeActivity, AppConfig.userProtocol)
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
}, 28, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }, 28, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
it.setSpan(object : ClickableSpan() { it.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
val map = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(this@ManagerChangeActivity, AppConfig.privacyPolicy)
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
}, 33, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }, 33, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
} }
......
...@@ -15,7 +15,7 @@ import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountListDto ...@@ -15,7 +15,7 @@ import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountListDto
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAccountListCallback import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAccountListCallback
import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSource import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSource
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/** /**
......
...@@ -15,7 +15,7 @@ import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSour ...@@ -15,7 +15,7 @@ import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSour
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalDissolveCallBack import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalDissolveCallBack
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/** /**
......
...@@ -9,7 +9,8 @@ import com.yidian.shenghuoquan.newscontent.http.ApiService ...@@ -9,7 +9,8 @@ import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IGetLifeAccountListCallback import com.yidian.shenghuoquan.newscontent.http.callback.IGetLifeAccountListCallback
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountIdentityActivity import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountIdentityActivity
import com.yidian.shenghuoquan.newscontent.ui.center.MerchantCenterActivity import com.yidian.shenghuoquan.newscontent.ui.center.MerchantCenterActivity
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountAuthDataManagerV2
import com.yidian.xarc.xrouter.ResultResolver import com.yidian.xarc.xrouter.ResultResolver
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
import com.yidian.yac.core.zap.ZapService import com.yidian.yac.core.zap.ZapService
...@@ -29,7 +30,9 @@ class LifeNumberListService : ZapService() { ...@@ -29,7 +30,9 @@ class LifeNumberListService : ZapService() {
this.resolver = resolver this.resolver = resolver
params as JSONObject params as JSONObject
when (action) { when (action) {
ZapServiceActionConstants.LifeNumberListServiceRequestList -> requestLifeNumberList() ZapServiceActionConstants.ActionRequestList -> requestLifeNumberList()
ZapServiceActionConstants.ActionRequestSmsCode -> requestSmsCode(params)
ZapServiceActionConstants.ActionClearAuthenticationData -> clearAuthenticationData()
} }
} }
...@@ -99,4 +102,29 @@ class LifeNumberListService : ZapService() { ...@@ -99,4 +102,29 @@ class LifeNumberListService : ZapService() {
}) })
} }
/**
* 请求短信验证码
*/
private fun requestSmsCode(params: JSONObject) {
val mobile = params.optString("mobile")
val scene = params.optString("scene")
val paramsMap = HashMap<String, String?>()
paramsMap["mobile"] = mobile
paramsMap["scene"] = scene
ApiService.sendMsgCode(paramsMap) {
if (it) {
resolver.success(true)
}
}
}
/**
* 清除内存中的认证数据
*/
private fun clearAuthenticationData() {
LifeAccountAuthDataManagerV2.personalAuthData.clearData()
LifeAccountAuthDataManagerV2.merchantAuthData.clearData()
}
} }
package com.yidian.shenghuoquan.newscontent.ui
import android.annotation.SuppressLint
import android.app.Activity
import android.content.ClipData
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.webkit.ValueCallback
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import com.orhanobut.hawk.Hawk
import com.yidian.bcommon.constant.HawkConfig
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.SUPPORT
import com.yidian.bcommon.base.BaseActivity
import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding
import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView
class ProductSupportActivity : BaseActivity<ActivityProtocolBinding>() {
override fun createViewBinding(): ActivityProtocolBinding {
return ActivityProtocolBinding.inflate(layoutInflater)
}
override fun getXPageName(): String {
return SUPPORT
}
private val FILE_CHOOSER_RESULT_CODE = 666
private var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null
private lateinit var webView: XWebView
@SuppressLint("SetJavaScriptEnabled")
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
initTitle()
webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.settings.javaScriptEnabled = true
val webViewClient: WebViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
super.shouldOverrideUrlLoading(view, url)
view.loadUrl(url)
return true
}
}
webView.webViewClient = webViewClient
webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView?,
filePathCallback: ValueCallback<Array<Uri>>?,
fileChooserParams: FileChooserParams?
): Boolean {
uploadMessageAboveL = filePathCallback
openImageChooserActivity()
return true
}
}
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
val url = "https://support.qq.com/product/304954"
val nickname = Hawk.get(HawkConfig.Nickname, "")
val profileUrl = Hawk.get(HawkConfig.ProfileUrl, "")
val username = Hawk.get(HawkConfig.Username, "")
val postData = "nickname=$nickname&avatar=$profileUrl&openid=$username"
webView.postUrl(url, postData.toByteArray())
}
private fun initTitle() {
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, resources.getString(R.string.my_staff))
}
private fun openImageChooserActivity() {
val i = Intent(Intent.ACTION_GET_CONTENT)
i.addCategory(Intent.CATEGORY_OPENABLE)
i.type = "image/*"
startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE)
}
private fun onActivityResultAboveL(requestCode: Int, resultCode: Int, intent: Intent?) {
if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) return
var results: Array<Uri>? = null
if (resultCode == Activity.RESULT_OK) {
if (intent != null) {
val dataString = intent.dataString
val clipData: ClipData? = intent.clipData
if (clipData != null) {
results = Array(clipData.itemCount) {
Uri.EMPTY
}
for (i in 0 until clipData.itemCount) {
val item: ClipData.Item = clipData.getItemAt(i)
results[i] = item.uri
}
}
if (dataString != null) results = arrayOf(Uri.parse(dataString))
}
}
uploadMessageAboveL?.onReceiveValue(results)
uploadMessageAboveL = null
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FILE_CHOOSER_RESULT_CODE) {
if (uploadMessageAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data)
}
}
}
}
package com.yidian.shenghuoquan.newscontent.ui
import android.os.Bundle
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.constant.XRouterPathConstants.Companion.PROTOCOL
import com.yidian.bcommon.base.BaseActivity
import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.bcommon.utils.ToastUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding
import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView
/**
* 用户协议 & 隐私政策
*/
class ProtocolActivity : BaseActivity<ActivityProtocolBinding>() {
private lateinit var webView: XWebView
override fun createViewBinding(): ActivityProtocolBinding {
return ActivityProtocolBinding.inflate(layoutInflater)
}
override fun getXPageName(): String {
return PROTOCOL
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
val serializableExtra = intent.getSerializableExtra(XRouterPathConstants.ParamsKey)
serializableExtra?.let {
val paramsMap = serializableExtra as HashMap<*, *>
val protocolTitle = paramsMap[ProtocolTitleKey] as String?
val protocolUrl = paramsMap[ProtocolUrlKey] as String?
initTitle(protocolTitle)
initWebView(protocolUrl)
}
}
private fun initTitle(protocolTitle: String?) {
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, protocolTitle ?: "协议")
}
private fun initWebView(protocolUrl: String?) {
if (protocolUrl.isNullOrBlank()) {
ToastUtils.showShortSafe("链接地址为空")
return
}
webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.loadUrl(protocolUrl)
}
companion object {
const val ProtocolTitleKey = "protocol_title"
const val ProtocolUrlKey = "protocol_url"
}
}
...@@ -17,7 +17,7 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountCreate ...@@ -17,7 +17,7 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountCreate
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil import com.yidian.shenghuoquan.newscontent.utils.InputFilterUtil
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
import com.yidian.utils.ToastUtil import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
......
...@@ -19,7 +19,7 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthEnterpriseLegalIden ...@@ -19,7 +19,7 @@ import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthEnterpriseLegalIden
import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthIndividualBusinessCompleteBean import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthIndividualBusinessCompleteBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthMerchantCheckBean import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthMerchantCheckBean
import com.yidian.shenghuoquan.newscontent.ui.dialog.BottomSelectDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.BottomSelectDialog
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthProcessView import com.yidian.shenghuoquan.newscontent.widget.LifeAccountAuthProcessView
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
......
...@@ -11,7 +11,7 @@ import com.yidian.shenghuoquan.newscontent.adapter.LifeAccountIdentityAdapter ...@@ -11,7 +11,7 @@ import com.yidian.shenghuoquan.newscontent.adapter.LifeAccountIdentityAdapter
import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountIdentityBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityLifeAccountIdentityBinding
import com.yidian.bcommon.bean.LifeAccountItemBean import com.yidian.bcommon.bean.LifeAccountItemBean
import com.yidian.shenghuoquan.newscontent.ui.center.MerchantCenterActivity import com.yidian.shenghuoquan.newscontent.ui.center.MerchantCenterActivity
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/** /**
......
...@@ -16,7 +16,7 @@ import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack ...@@ -16,7 +16,7 @@ import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack
import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthAuthenticationBean import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthAuthenticationBean
import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthPersonalCompleteBean import com.yidian.shenghuoquan.newscontent.http.httpbean.AuthPersonalCompleteBean
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
import com.yidian.xarc.xevent.XBaseEvent import com.yidian.xarc.xevent.XBaseEvent
import com.yidian.xarc.xevent.XEventManager import com.yidian.xarc.xevent.XEventManager
......
...@@ -32,7 +32,7 @@ import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActi ...@@ -32,7 +32,7 @@ import com.yidian.shenghuoquan.newscontent.ui.auth.LifeAccountEnterpriseAuthActi
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.ui.dialog.MerchantCenterBottomHintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.MerchantCenterBottomHintDialog
import com.yidian.shenghuoquan.newscontent.ui.setting.SystemSettingActivity import com.yidian.shenghuoquan.newscontent.ui.setting.SystemSettingActivity
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView import com.yidian.shenghuoquan.newscontent.widget.LifeAccountLabelView
import com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView import com.yidian.shenghuoquan.newscontent.widget.MerchantAssetView
......
...@@ -12,7 +12,7 @@ import com.yidian.shenghuoquan.newscontent.R ...@@ -12,7 +12,7 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.MerchantSwitchAdapter import com.yidian.shenghuoquan.newscontent.adapter.MerchantSwitchAdapter
import com.yidian.shenghuoquan.newscontent.databinding.DialogMerchantSwitchBinding import com.yidian.shenghuoquan.newscontent.databinding.DialogMerchantSwitchBinding
import com.yidian.bcommon.bean.LifeAccountItemBean import com.yidian.bcommon.bean.LifeAccountItemBean
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.utils.DensityUtil import com.yidian.utils.DensityUtil
/** /**
......
package com.yidian.shenghuoquan.newscontent.ui.dialog
import android.app.Activity
import android.app.Dialog
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.TextPaint
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.text.style.ForegroundColorSpan
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import com.orhanobut.hawk.Hawk
import com.yidian.bcommon.constant.AppConfig.Companion.privacyPolicyStatement
import com.yidian.bcommon.constant.AppConfig.Companion.userProtocol
import com.yidian.bcommon.constant.HawkConfig
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.nightmode.widget.YdTextView
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager
/**
* 用户协议 & 隐私政策 弹框
*/
class ProtocolDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?) :
Dialog(activity, themeResId) {
private lateinit var tvPrivacyPolicyTwo: YdTextView
private lateinit var tvAgree: YdTextView
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
init {
setDialog()
}
private fun setDialog() {
this.setCanceledOnTouchOutside(false)
this.setContentView(R.layout.protocol_dialog)
this.setOwnerActivity(activity)
tvPrivacyPolicyTwo = findViewById(R.id.tv_privacyPolicyTwo)
tvAgree = findViewById(R.id.tv_agree)
tvDisagree = findViewById(R.id.tv_disagree)
setSpannableString()
setClickListener()
}
private fun setSpannableString() {
tvPrivacyPolicyTwo.highlightColor = Color.TRANSPARENT
val textSpannedBuilder = SpannableStringBuilder()
val textSpanned1 = SpannableString(activity.getString(R.string.privacy_policy_two_first))
val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy_statement))
textSpanned2.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
0,
textSpanned2.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned2.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.getString(R.string.privacy_policy_statement)
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false
}
}, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned3 = SpannableString(activity.getString(R.string.and))
textSpanned3.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
0,
textSpanned3.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
val textSpanned4 = SpannableString(activity.getString(R.string.user_protocol))
textSpanned4.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
0,
textSpanned4.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned4.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.getString(R.string.user_protocol)
urlMap[ProtocolActivity.ProtocolUrlKey] = userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false
}
}, 0, textSpanned4.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned5 = SpannableString(activity.getString(R.string.privacy_policy_two_second))
textSpanned5.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
0,
textSpanned5.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
tvPrivacyPolicyTwo.movementMethod = LinkMovementMethod.getInstance()
tvPrivacyPolicyTwo.text =
textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3).append(textSpanned4).append(textSpanned5)
}
private fun setClickListener() {
tvAgree.setOnClickListener {
Hawk.put(HawkConfig.ProtocolIsAgree, true)
dismiss()
Handler().postDelayed({
XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
activity.finish()
}, 1000)
}
tvDisagree.setOnClickListener {
dismiss()
val protocolHintDialog = ProtocolHintDialog(activity, R.style.normal_dialog, paramsMap)
protocolHintDialog.show()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val params: WindowManager.LayoutParams? = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT
window?.attributes = params
window?.attributes?.gravity = Gravity.BOTTOM
}
}
package com.yidian.shenghuoquan.newscontent.ui.dialog
import android.app.Activity
import android.app.Dialog
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.TextPaint
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.text.style.ForegroundColorSpan
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import com.orhanobut.hawk.Hawk
import com.yidian.bcommon.constant.AppConfig.Companion.privacyPolicyStatement
import com.yidian.bcommon.constant.HawkConfig
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.nightmode.widget.YdTextView
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager
/**
* 用户协议 & 隐私政策的 详细内容提示弹框
*/
class ProtocolHintDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?) :
Dialog(activity, themeResId) {
private lateinit var tvContent: YdTextView
private lateinit var tvAgree: YdTextView
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
init {
setDialog()
}
private fun setDialog() {
this.setCanceledOnTouchOutside(false)
this.setContentView(R.layout.protocol_hint_dialog)
this.setOwnerActivity(activity)
tvContent = findViewById(R.id.tv_content)
tvAgree = findViewById(R.id.tv_agree)
tvDisagree = findViewById(R.id.tv_disagree)
setSpannableString()
setClickListener()
}
private fun setSpannableString() {
tvContent.highlightColor = Color.TRANSPARENT
val textSpannedBuilder = SpannableStringBuilder()
val textSpanned1 = SpannableString(activity.getString(R.string.protocol_hint_content_one))
val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy))
textSpanned2.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
0,
textSpanned2.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned2.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.resources.getString(R.string.privacy_policy_statement)
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false
}
}, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned3 = SpannableString(activity.getString(R.string.protocol_hint_content_two))
textSpanned3.setSpan(
ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
0,
textSpanned3.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
tvContent.movementMethod = LinkMovementMethod.getInstance()
tvContent.text = textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3)
}
private fun setClickListener() {
tvAgree.setOnClickListener {
Hawk.put(HawkConfig.ProtocolIsAgree, true)
dismiss()
Handler().postDelayed({
XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
activity.finish()
}, 1000)
}
tvDisagree.setOnClickListener {
dismiss()
Handler().postDelayed({
activity.finish()
}, 200)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val params: WindowManager.LayoutParams? = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT
window?.attributes = params
window?.attributes?.gravity = Gravity.BOTTOM
}
}
...@@ -16,13 +16,13 @@ import com.yidian.bcommon.extensions.initTitleBar ...@@ -16,13 +16,13 @@ import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.bcommon.http.bean.GetCommonConfigBean import com.yidian.bcommon.http.bean.GetCommonConfigBean
import com.yidian.bcommon.services.AppUpgradeService import com.yidian.bcommon.services.AppUpgradeService
import com.yidian.bcommon.utils.SystemSettingUtils import com.yidian.bcommon.utils.SystemSettingUtils
import com.yidian.bcommon.webview.PublicWebViewActivity
import com.yidian.bcommon.widget.CommonInfoDialog import com.yidian.bcommon.widget.CommonInfoDialog
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean
import com.yidian.shenghuoquan.newscontent.databinding.ActivitySystemSettingBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivitySystemSettingBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack import com.yidian.shenghuoquan.newscontent.http.callback.IUserLogoutCallBack
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.utils.ToastUtil import com.yidian.utils.ToastUtil
...@@ -94,17 +94,11 @@ class SystemSettingActivity : BaseActivity<ActivitySystemSettingBinding>() { ...@@ -94,17 +94,11 @@ class SystemSettingActivity : BaseActivity<ActivitySystemSettingBinding>() {
} }
// 用户协议 // 用户协议
viewBind.clProtocol.clickAntiShake { viewBind.clProtocol.clickAntiShake {
val urlMap = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(this, AppConfig.userProtocol)
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
urlMap[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
} }
// 隐私政策 // 隐私政策
viewBind.clPrivacy.clickAntiShake { viewBind.clPrivacy.clickAntiShake {
val urlMap = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(this, AppConfig.privacyPolicy)
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
urlMap[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
} }
// 用户反馈 // 用户反馈
viewBind.clFeedback.clickAntiShake { viewBind.clFeedback.clickAntiShake {
......
...@@ -13,7 +13,7 @@ import com.yidian.shenghuoquan.newscontent.R ...@@ -13,7 +13,7 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.ChooseStoreApter import com.yidian.shenghuoquan.newscontent.adapter.ChooseStoreApter
import com.yidian.shenghuoquan.newscontent.databinding.ActivityChooseStoreBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityChooseStoreBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.xarc.xevent.XBaseEvent import com.yidian.xarc.xevent.XBaseEvent
import com.yidian.xarc.xevent.XEventManager import com.yidian.xarc.xevent.XEventManager
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
......
...@@ -10,7 +10,7 @@ import com.yidian.bcommon.utils.EditTextUtils ...@@ -10,7 +10,7 @@ import com.yidian.bcommon.utils.EditTextUtils
import com.yidian.bcommon.utils.ToastUtils import com.yidian.bcommon.utils.ToastUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityStoreEditBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityStoreEditBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView import com.yidian.shenghuoquan.newscontent.widget.CommonTopBarView
/** /**
......
...@@ -3,7 +3,6 @@ package com.yidian.shenghuoquan.newscontent.ui.store ...@@ -3,7 +3,6 @@ package com.yidian.shenghuoquan.newscontent.ui.store
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.text.Editable
import android.text.TextWatcher
import android.view.KeyEvent import android.view.KeyEvent
import com.amap.api.services.core.AMapException import com.amap.api.services.core.AMapException
import com.amap.api.services.core.PoiItem import com.amap.api.services.core.PoiItem
...@@ -16,7 +15,7 @@ import com.yidian.bcommon.extensions.hide ...@@ -16,7 +15,7 @@ import com.yidian.bcommon.extensions.hide
import com.yidian.bcommon.extensions.initTitleBar import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.bcommon.extensions.show import com.yidian.bcommon.extensions.show
import com.yidian.shenghuoquan.newscontent.databinding.LayoutActivityServiceProductAddrSearchBinding import com.yidian.shenghuoquan.newscontent.databinding.LayoutActivityServiceProductAddrSearchBinding
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
/** /**
* 搜索门店地址 * 搜索门店地址
......
...@@ -10,7 +10,7 @@ import com.yidian.bcommon.extensions.show ...@@ -10,7 +10,7 @@ import com.yidian.bcommon.extensions.show
import com.yidian.shenghuoquan.newscontent.adapter.StoreAdapter import com.yidian.shenghuoquan.newscontent.adapter.StoreAdapter
import com.yidian.shenghuoquan.newscontent.databinding.ActivityStoreManagementBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityStoreManagementBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.utils.StorageUtil import com.yidian.bcommon.utils.StorageUtil
/** /**
* 门店管理 * 门店管理
......
...@@ -7,9 +7,9 @@ import com.yidian.bcommon.base.BaseActivity ...@@ -7,9 +7,9 @@ import com.yidian.bcommon.base.BaseActivity
import com.yidian.bcommon.extensions.clickAntiShake import com.yidian.bcommon.extensions.clickAntiShake
import com.yidian.bcommon.extensions.hide import com.yidian.bcommon.extensions.hide
import com.yidian.bcommon.extensions.show import com.yidian.bcommon.extensions.show
import com.yidian.bcommon.webview.PublicWebViewActivity
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyWalletBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyWalletBinding
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
...@@ -54,9 +54,7 @@ class MyWalletActivity : BaseActivity<ActivityMyWalletBinding>() { ...@@ -54,9 +54,7 @@ class MyWalletActivity : BaseActivity<ActivityMyWalletBinding>() {
viewBind.include.ivMenu.show() viewBind.include.ivMenu.show()
viewBind.include.ivMenu.setImageResource(R.drawable.icon_faq) viewBind.include.ivMenu.setImageResource(R.drawable.icon_faq)
viewBind.include.ivMenu.setOnClickListener { viewBind.include.ivMenu.setOnClickListener {
val urlMap = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(this, AppConfig.commonProblem)
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.commonProblem
XPageManager.push(XRouterPathConstants.COMMON_PROBLEM, urlMap)
} }
} }
} }
...@@ -9,8 +9,8 @@ import com.yidian.bcommon.base.BaseActivity ...@@ -9,8 +9,8 @@ import com.yidian.bcommon.base.BaseActivity
import com.yidian.bcommon.extensions.clickAntiShake import com.yidian.bcommon.extensions.clickAntiShake
import com.yidian.bcommon.extensions.initTitleBar import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.databinding.ActivityVerifyIdentifyBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityVerifyIdentifyBinding
import com.yidian.shenghuoquan.newscontent.utils.CountDownTimerUtils import com.yidian.bcommon.utils.CountDownTimerUtils
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/** /**
......
...@@ -10,7 +10,7 @@ import com.yidian.bcommon.extensions.initTitleBar ...@@ -10,7 +10,7 @@ import com.yidian.bcommon.extensions.initTitleBar
import com.yidian.bcommon.extensions.show import com.yidian.bcommon.extensions.show
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityWithdrawBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityWithdrawBinding
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter import com.yidian.bcommon.utils.TextWatcherAdapter
import java.lang.Exception import java.lang.Exception
/** /**
......
...@@ -6,11 +6,9 @@ import android.view.View ...@@ -6,11 +6,9 @@ import android.view.View
import android.widget.CompoundButton import android.widget.CompoundButton
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import com.yidian.bcommon.constant.AppConfig import com.yidian.bcommon.constant.AppConfig
import com.yidian.bcommon.constant.XRouterPathConstants import com.yidian.bcommon.webview.PublicWebViewActivity
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ViewPrivacyAgreementBinding import com.yidian.shenghuoquan.newscontent.databinding.ViewPrivacyAgreementBinding
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager
/** /**
* author: yinjiacheng * author: yinjiacheng
...@@ -44,16 +42,10 @@ class PrivacyAgreementView @JvmOverloads constructor( ...@@ -44,16 +42,10 @@ class PrivacyAgreementView @JvmOverloads constructor(
val id = v?.id val id = v?.id
if (id == R.id.tv_privacy_policy) { if (id == R.id.tv_privacy_policy) {
// 隐私政策 // 隐私政策
val map = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(context, AppConfig.privacyPolicy)
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} else if (id == R.id.tv_user_agreement) { } else if (id == R.id.tv_user_agreement) {
// 用户协议 // 用户协议
val map = HashMap<String, String>() PublicWebViewActivity.startWebViewActivity(context, AppConfig.userProtocol)
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
} }
......
...@@ -12,10 +12,6 @@ ...@@ -12,10 +12,6 @@
<activity <activity
android:name=".ui.auth.LifeAccountCreateCompleteActivity" android:name=".ui.auth.LifeAccountCreateCompleteActivity"
android:theme="@style/Transparent" /> android:theme="@style/Transparent" />
<activity
android:name=".ui.ProtocolActivity"
android:theme="@style/Transparent" />
<activity android:name=".ui.LoginLifeCircleActivity" />
<activity <activity
android:name=".ui.store.StoreManagementActivity" android:name=".ui.store.StoreManagementActivity"
android:theme="@style/Transparent" /> android:theme="@style/Transparent" />
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/mainBgColor"
android:fitsSystemWindows="true"
android:orientation="vertical">
<include
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<com.yidian.bcommon.webview.YiDianWebView
android:id="@+id/wv_protocol"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:scrollbars="none" />
</LinearLayout>
...@@ -109,11 +109,6 @@ ...@@ -109,11 +109,6 @@
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
</style> </style>
<!--生活圈B端-->
<style name="protocol_checkboxBg" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/protocol_checkbox_bg</item>
</style>
<style name="merchant_center_bottom_hint_dialog" parent="android:style/Theme.Dialog"> <style name="merchant_center_bottom_hint_dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item> <item name="android:windowNoTitle">true</item>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment