Commit f8b18f9c authored by yinjiacheng's avatar yinjiacheng

add 订单详情联系卖家和联系自提点功能动态申请CALL_PHONE权限

parent faf578d0
package com.yidian.shenghuoquan.border.ui.widget package com.yidian.shenghuoquan.border.ui.widget
import android.Manifest
import android.content.Context import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.tbruyelle.rxpermissions3.RxPermissions
import com.yidian.bcommon.utils.ToastUtils import com.yidian.bcommon.utils.ToastUtils
import com.yidian.bcommon.widget.CommonHintDialog import com.yidian.bcommon.widget.CommonHintDialog
import com.yidian.shenghuoquan.border.R import com.yidian.shenghuoquan.border.R
...@@ -69,6 +74,19 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs: ...@@ -69,6 +74,19 @@ class OrderCommodityInfoView @JvmOverloads constructor(context: Context, attrs:
ToastUtils.showShortSafe("已申请退款") ToastUtils.showShortSafe("已申请退款")
} }
}) })
// 监听点击联系卖家
vm.contractSeller.observe(context as LifecycleOwner, { phone ->
// 先判断权限
RxPermissions(context as FragmentActivity).request(Manifest.permission.CALL_PHONE).subscribe { granted ->
if (granted) {
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:$phone")
context.startActivity(intent)
} else {
ToastUtils.showShortSafe("请在设置里同意相关权限")
}
}
})
} }
/** /**
......
package com.yidian.shenghuoquan.border.ui.widget package com.yidian.shenghuoquan.border.ui.widget
import android.Manifest
import android.content.Context import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.AttributeSet import android.util.AttributeSet
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil import androidx.databinding.DataBindingUtil
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.LifecycleOwner
import com.tbruyelle.rxpermissions3.RxPermissions
import com.yidian.bcommon.utils.ToastUtils
import com.yidian.shenghuoquan.border.R import com.yidian.shenghuoquan.border.R
import com.yidian.shenghuoquan.border.databinding.BorderViewOrderPickupPointInfoBinding import com.yidian.shenghuoquan.border.databinding.BorderViewOrderPickupPointInfoBinding
import com.yidian.shenghuoquan.border.dto.PlaceList import com.yidian.shenghuoquan.border.dto.PlaceList
...@@ -25,13 +32,37 @@ class OrderPickupPointInfoView @JvmOverloads constructor(context: Context, attrs ...@@ -25,13 +32,37 @@ class OrderPickupPointInfoView @JvmOverloads constructor(context: Context, attrs
this, this,
true true
) )
private val vm by lazy { OrderPickupPointViewModel() }
init {
registerUIEvent()
}
/**
* 注册UI事件监听
*/
private fun registerUIEvent() {
// 监听点击联系自提点
vm.contractPickupPoint.observe(context as LifecycleOwner, { phone ->
// 先判断权限
RxPermissions(context as FragmentActivity).request(Manifest.permission.CALL_PHONE).subscribe { granted ->
if (granted) {
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:$phone")
context.startActivity(intent)
} else {
ToastUtils.showShortSafe("请在设置里同意相关权限")
}
}
})
}
/** /**
* 设置自提点 * 设置自提点
* @param info 自提点信息 * @param info 自提点信息
*/ */
fun setPickupPoint(info: PlaceList?) { fun setPickupPoint(info: PlaceList?) {
binding.vm = OrderPickupPointViewModel() binding.vm = vm
binding.data = info binding.data = info
} }
} }
package com.yidian.shenghuoquan.border.viewmodel package com.yidian.shenghuoquan.border.viewmodel
import android.content.Intent
import android.net.Uri
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.mvvm.BaseViewModel import com.yidian.bcommon.mvvm.BaseViewModel
import com.yidian.shenghuoquan.border.http.OrderRemoteDataSource import com.yidian.shenghuoquan.border.http.OrderRemoteDataSource
import com.yidian.shenghuoquan.border.http.callback.IApplyRefundCallback import com.yidian.shenghuoquan.border.http.callback.IApplyRefundCallback
...@@ -22,6 +19,9 @@ class OrderCommodityInfoViewModel : BaseViewModel() { ...@@ -22,6 +19,9 @@ class OrderCommodityInfoViewModel : BaseViewModel() {
private val _applyRefund = MutableLiveData<String>() private val _applyRefund = MutableLiveData<String>()
val applyRefund: LiveData<String> = _applyRefund val applyRefund: LiveData<String> = _applyRefund
private val _contractSeller = MutableLiveData<String>()
val contractSeller: LiveData<String> = _contractSeller
/** /**
* 申请退款 * 申请退款
* @param orderId 订单id * @param orderId 订单id
...@@ -32,14 +32,10 @@ class OrderCommodityInfoViewModel : BaseViewModel() { ...@@ -32,14 +32,10 @@ class OrderCommodityInfoViewModel : BaseViewModel() {
/** /**
* 联系卖家 * 联系卖家
* 打开拨号界面
* @param phone 电话号码 * @param phone 电话号码
*/ */
fun contractSeller(phone: String) { fun contractSeller(phone: String) {
val intent = Intent(Intent.ACTION_DIAL) _contractSeller.value = phone
intent.data = Uri.parse("tel:$phone")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
YdBaseApplication.context.startActivity(intent)
} }
/** /**
......
package com.yidian.shenghuoquan.border.viewmodel package com.yidian.shenghuoquan.border.viewmodel
import android.content.Intent import androidx.lifecycle.LiveData
import android.net.Uri import androidx.lifecycle.MutableLiveData
import com.yidian.bcommon.app.YdBaseApplication
import com.yidian.bcommon.mvvm.BaseViewModel import com.yidian.bcommon.mvvm.BaseViewModel
/** /**
...@@ -12,15 +11,14 @@ import com.yidian.bcommon.mvvm.BaseViewModel ...@@ -12,15 +11,14 @@ import com.yidian.bcommon.mvvm.BaseViewModel
*/ */
class OrderPickupPointViewModel : BaseViewModel() { class OrderPickupPointViewModel : BaseViewModel() {
private val _contractPickupPoint = MutableLiveData<String>()
val contractPickupPoint: LiveData<String> = _contractPickupPoint
/** /**
* 联系自提点 * 联系自提点
* 打开拨号界面
* @param phone 电话号码 * @param phone 电话号码
*/ */
fun contractPickupPoint(phone: String) { fun contractPickupPoint(phone: String) {
val intent = Intent(Intent.ACTION_DIAL) _contractPickupPoint.value = phone
intent.data = Uri.parse("tel:$phone")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
YdBaseApplication.context.startActivity(intent)
} }
} }
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