Commit 9714c385 authored by wanglei's avatar wanglei

...

parent 2e4888a5
......@@ -5,7 +5,6 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import androidx.viewbinding.ViewBinding
......@@ -42,7 +41,7 @@ abstract class BaseActivity<VB : ViewBinding>(
var onCreateI = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
// enableEdgeToEdge()
configSystemBar()
onCreateI++
LogEx.logDebug(TAG, "lifecycle $tagNo onCreate ${javaClass.simpleName} $onCreateI")
......
......@@ -19,6 +19,7 @@ import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TELEPHONE
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
import com.base.scanqr.bean.MessageUIBean
import com.base.scanqr.bean.ProductUIBean
import com.base.scanqr.bean.ScanBean
import com.base.scanqr.bean.TelephoneUIBean
......@@ -107,7 +108,12 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
}
}
KEY_MESSAGE -> {}
KEY_MESSAGE -> {
if (item is MessageUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_message)
}
}
KEY_PRODUCT -> {
if (item is ProductUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_product)
......
......@@ -15,6 +15,7 @@ import com.base.scanqr.databinding.FragmentHistoryBinding
import com.base.scanqr.ui.contact.ContractCodeActivity
import com.base.scanqr.ui.email.EmailCodeActivity
import com.base.scanqr.ui.event.EventCodeActivity
import com.base.scanqr.ui.message.MessageCodeActivity
import com.base.scanqr.ui.product.ProductCodeActivity
import com.base.scanqr.ui.telephone.TelephoneCodeActivity
import com.base.scanqr.ui.text.TextCodeActivity
......@@ -120,6 +121,12 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
putExtra("data", Gson().toJson(item))
})
}
FunctionUIBean.KEY_MESSAGE -> {
activity?.startActivity(Intent(activity, MessageCodeActivity::class.java).apply {
putExtra("data", Gson().toJson(item))
})
}
}
}
......
......@@ -6,6 +6,7 @@ import com.base.scanqr.bean.ContractUIBean
import com.base.scanqr.bean.EmailUIBean
import com.base.scanqr.bean.EventUIBean
import com.base.scanqr.bean.FunctionUIBean
import com.base.scanqr.bean.MessageUIBean
import com.base.scanqr.bean.ProductUIBean
import com.base.scanqr.bean.ScanBean
import com.base.scanqr.bean.TelephoneUIBean
......@@ -45,6 +46,8 @@ class HistoryViewModel() : ViewModel() {
telephoneList.forEach { it.listContent = it.tel }
val contractList = SpJsonUtils.getSpJsonList<ContractUIBean>(FunctionUIBean.KEY_CONTACT)
contractList.forEach { it.listContent = it.n }
val messageList = SpJsonUtils.getSpJsonList<MessageUIBean>(FunctionUIBean.KEY_MESSAGE)
messageList.forEach { it.listContent = it.msg }
historyList.addAll(wifiList)
historyList.addAll(textList)
......@@ -54,6 +57,7 @@ class HistoryViewModel() : ViewModel() {
historyList.addAll(eventList)
historyList.addAll(telephoneList)
historyList.addAll(contractList)
historyList.addAll(messageList)
historyList.forEach {
LogEx.logDebug(TAG, "${it.scanType} ${it.createTime} ${it.createType} ${it.listContent}")
......@@ -117,6 +121,12 @@ class HistoryViewModel() : ViewModel() {
it1.createTime == it2.createTime
})
}
FunctionUIBean.KEY_MESSAGE -> {
SpJsonUtils.removeJsonBean<MessageUIBean>(bean.scanType, bean as MessageUIBean, removeIf = { it1, it2 ->
it1.createTime == it2.createTime
})
}
}
historyList.remove(bean)
......
......@@ -19,6 +19,8 @@ import com.base.scanqr.bean.EmailUIBean.Companion.createEmailBean
import com.base.scanqr.bean.EmailUIBean.Companion.isEmailQR
import com.base.scanqr.bean.EventUIBean.Companion.createEventBean
import com.base.scanqr.bean.EventUIBean.Companion.isEventQR
import com.base.scanqr.bean.MessageUIBean.Companion.createMessageBean
import com.base.scanqr.bean.MessageUIBean.Companion.isMessageQR
import com.base.scanqr.bean.ProductUIBean
import com.base.scanqr.bean.ScanBean.Companion.CREATE_TYPE_SCAN
import com.base.scanqr.bean.TelephoneUIBean.Companion.createTelephoneBean
......@@ -33,6 +35,7 @@ import com.base.scanqr.qr.QRImageAnalyzer
import com.base.scanqr.ui.contact.ContractCodeActivity
import com.base.scanqr.ui.email.EmailCodeActivity
import com.base.scanqr.ui.event.EventCodeActivity
import com.base.scanqr.ui.message.MessageCodeActivity
import com.base.scanqr.ui.product.ProductCodeActivity
import com.base.scanqr.ui.telephone.TelephoneCodeActivity
import com.base.scanqr.ui.text.TextCodeActivity
......@@ -149,6 +152,24 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
})
return
}
if (isMessageQR(qrCodeValue)) {
if (scanJump.get()) return
scanJump.set(true)
AdsMgr.showInsert(activity, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jumpMessageCodeActivity(activity, qrCodeValue)
}
override fun failed(where: Int) {
jumpMessageCodeActivity(activity, qrCodeValue)
}
override fun googleFailed(where: Int) {
jumpMessageCodeActivity(activity, qrCodeValue)
}
})
return
}
if (isContractQR(qrCodeValue)) {
if (scanJump.get()) return
scanJump.set(true)
......@@ -284,6 +305,15 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
}
}
private fun jumpMessageCodeActivity(activity: MainActivity, qrCodeValue: String) {
activity.startActivity(Intent(activity, MessageCodeActivity::class.java).apply {
val bean = createMessageBean(qrCodeValue)
bean.needCreate = true
bean.createType = CREATE_TYPE_SCAN
putExtra("data", Gson().toJson(bean))
})
}
private fun jumpContractCodeActivity(activity: MainActivity, qrCodeValue: String) {
activity.startActivity(Intent(activity, ContractCodeActivity::class.java).apply {
val bean = createContractBean(qrCodeValue)
......
package com.base.scanqr.ui.message
import android.annotation.SuppressLint
import android.content.Intent
import android.net.Uri
import android.view.MotionEvent
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.core.widget.addTextChangedListener
import androidx.lifecycle.lifecycleScope
import com.base.scanqr.R
import com.base.scanqr.ads.AdsMgr
import com.base.scanqr.ads.AdsShowCallBack
......@@ -11,8 +15,14 @@ import com.base.scanqr.base.BaseActivity
import com.base.scanqr.bean.MessageUIBean
import com.base.scanqr.databinding.ActivityMessageBinding
import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.ContactUtils.queryTel
import com.base.scanqr.utils.IntentUtils.intentPickContacts
import com.base.scanqr.utils.LogEx
import com.base.scanqr.utils.PermissionUtils.checkContactsReadPermission
import com.base.scanqr.utils.ToastUtils.toast
import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class MessageActivity : BaseActivity<ActivityMessageBinding>(ActivityMessageBinding::inflate) {
......@@ -30,6 +40,7 @@ class MessageActivity : BaseActivity<ActivityMessageBinding>(ActivityMessageBind
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_app_exit)
}
@SuppressLint("ClickableViewAccessibility")
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
......@@ -56,6 +67,29 @@ class MessageActivity : BaseActivity<ActivityMessageBinding>(ActivityMessageBind
binding.editContent.addTextChangedListener { s ->
messageUIBean.msg = s.toString()
}
binding.editPhone.setOnTouchListener { v, event ->
if (event.action == MotionEvent.ACTION_UP) {
val x = event.x.toInt()
val y = event.y.toInt()
val drawableEnd = binding.editPhone.compoundDrawablesRelative[2]
if (drawableEnd != null) {
val drawableWidth = drawableEnd.intrinsicWidth
val drawableHeight = drawableEnd.intrinsicHeight
val paddingEnd = binding.editPhone.paddingEnd
val left = binding.editPhone.width - drawableWidth - paddingEnd
val right = binding.editPhone.width - paddingEnd
val top = (binding.editPhone.height - drawableHeight) / 2
val bottom = top + drawableHeight
if (x in left..right && y in top..bottom) {
onDrawableClicked()
return@setOnTouchListener true
}
}
}
return@setOnTouchListener false
}
binding.flQueren.setOnClickListener {
if (messageUIBean.smsto.isEmpty()) {
toast("Enter phone number", true)
......@@ -71,4 +105,39 @@ class MessageActivity : BaseActivity<ActivityMessageBinding>(ActivityMessageBind
finish()
}
}
private fun onDrawableClicked() {
LogEx.logDebug(TAG, "onDrawableClicked")
if (!checkContactsReadPermission()) {
launcher.launch(arrayOf(android.Manifest.permission.READ_CONTACTS)) {
if (checkContactsReadPermission()) {
pickTel()
}
}
} else {
pickTel()
}
}
private fun pickTel() {
val intent = intentPickContacts()
try {
launcher.launch(intent) { result ->
val contactUri: Uri? = result.data?.data
LogEx.logDebug(TAG, "")
if (contactUri != null) {
lifecycleScope.launch(Dispatchers.IO) {
val tel = queryTel(contactUri) ?: ""
messageUIBean.smsto = tel
launch(Dispatchers.Main) {
binding.editPhone.setText(tel)
}
}
}
}
} catch (e: Exception) {
toast("No application was found to handle the contacts pick", true)
}
}
}
\ No newline at end of file
......@@ -14,6 +14,7 @@ import com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import com.base.scanqr.utils.ClipboardUtils.copyText
import com.base.scanqr.utils.IntentUtils.intentSendSms
import com.base.scanqr.utils.IntentUtils.intentShareImage
import com.base.scanqr.utils.LogEx
import com.base.scanqr.utils.QRCodeUtils.generateQRCode
......@@ -124,13 +125,13 @@ class MessageCodeActivity : BaseActivity<ActivityMessageCodeBinding>(ActivityMes
toast("Copied to clipboard", true)
}
binding.flSearch.setOnClickListener {
// val intent = intentAddCalendar(eventUIBean)
// try {
// startActivity(intent)
// finish()
// } catch (e: Exception) {
// toast("No application was found to handle the calendar event request", true)
// }
val intent = intentSendSms(messageUIBean)
try {
startActivity(intent)
finish()
} catch (e: Exception) {
toast("No application was found to handle the send message request", true)
}
}
}
......
package com.base.scanqr.utils
import android.content.ContentValues
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
......@@ -12,6 +12,7 @@ import androidx.core.content.FileProvider
import com.base.scanqr.bean.ContractUIBean
import com.base.scanqr.bean.EmailUIBean
import com.base.scanqr.bean.EventUIBean
import com.base.scanqr.bean.MessageUIBean
import java.io.File
import java.util.GregorianCalendar
import java.util.TimeZone
......@@ -153,4 +154,14 @@ object IntentUtils {
val shareIntent = Intent.createChooser(intent, null)
return shareIntent
}
@SuppressLint("IntentReset")
fun intentSendSms(bean: MessageUIBean): Intent {
val smsIntent = Intent(Intent.ACTION_VIEW)
smsIntent.setType("vnd.android-dir/mms-sms")
smsIntent.setData(Uri.parse("smsto:" + bean.smsto))
smsIntent.putExtra("sms_body", bean.msg)
val chooserIntent = Intent.createChooser(smsIntent, null)
return chooserIntent
}
}
\ No newline at end of file
......@@ -83,8 +83,10 @@
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/bg_f4f4f4_15"
android:drawableEnd="@mipmap/tianjia"
android:hint="@string/to"
android:inputType="phone"
android:maxLength="25"
android:paddingHorizontal="14dp"
android:textColor="@color/black"
android:textColorHint="#999999"
......
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