Commit f8b18f9c authored by yinjiacheng's avatar yinjiacheng

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

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