У меня есть один класс, который расширяет BroadcastReceiver
. Поэтому, когда приходит сообщение, вызывается этот метод. Теперь в этом методе я вызываю метод другого класса, чтобы установить текст в EditText
. Но так как я использую kotlin, мне нужно использовать статический метод в объекте-компаньоне. Итак, как мне вызвать setText
для моего EditText
в этом методе или где-то еще?
Мой BroadcastReceiver
Класс:
class SMS : BroadcastReceiver() {
val OTP_REGEX = "[0-9]{1,6}"
override fun onReceive(context: Context, intent: Intent) {
Log.e("onReceive", "==->$intent")
val bundle = intent.extras
try {
if (bundle != null) {
Log.e("onReceive", "==->$bundle")
val pdusObj = bundle.get("pdus") as Array<Any>
for (i in pdusObj.indices) {
val currentMessage = SmsMessage.createFromPdu(pdusObj[i] as ByteArray)
val phoneNumber = currentMessage.displayOriginatingAddress
val senderNum = phoneNumber
val message = currentMessage.displayMessageBody
Log.e("getMessage", "===->$message")
try {
VerifyOTPActivity.ReceievdMsg(message);
} catch (e: Exception) {
e.printStackTrace()
}
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
Класс, в котором мне нужно установить это сообщение в тексте редактирования.
class VerifyOTPActivity : AppCompatActivity() {
companion object {
@JvmStatic
fun ReceievdMsg(message: String) {
var otp = ""
val OTP_NUMBERS = "[0-9]{1,6}"
val pattern = Pattern.compile(OTP_NUMBERS)
val matcher = pattern.matcher(message)
while (matcher.find()) {
otp = matcher.group()
}
try {
// edt.setText(otp) // Edit text
} catch (e: Exception) {
}
}
}
var mobileNo: String = ""
var preference: AppPreference? = null
lateinit var adminAPI: AdminAPI
lateinit var customDialog: CustomDialog
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_verify_otp)
preference = Utils.getAppPreference(applicationContext)
adminAPI = ServiceGenerator.getAPIClass()
customDialog = CustomDialog(this)
customDialog.setCancelable(false)
val intent: Intent = intent
mobileNo = intent.getStringExtra("mobileNo")
workonIds()
setupToolBar()
}
private fun setupToolBar() {
txt_toolbar_title.gravity = Gravity.CENTER
}
private fun workonIds() {
txt_mobile_no.setText(mobileNo)
txt_mobile_no.setOnClickListener{
onBackPressed()
}
layout_next.setOnClickListener {
val getOTP = edt_otp.text.toString().trim()
val getMobileNo = txt_mobile_no.text.toString().trim()
if (getOTP.isEmpty()) {
C.showToast(applicationContext, resources.getString(R.string.emptyotp))
} else if (getOTP.length < 6) {
C.showToast(applicationContext, resources.getString(R.string.validotp))
} else {
verifyOTP(getMobileNo , getOTP)
}
}
}
private fun verifyOTP(mobileNo: String, otp: String) {
customDialog.show()
val sendOTP : Call<AppModel> = adminAPI.VerifyOTP(mobileNo , otp)
sendOTP.enqueue(object : Callback<AppModel> {
override fun onFailure(call: Call<AppModel>?, t: Throwable?) {
customDialog.dismiss()
C.errorToast(applicationContext , t)
}
override fun onResponse(call: Call<AppModel>?, response: Response<AppModel>?) {
customDialog.dismiss()
val appModel : AppModel = response!!.body()!!
if (appModel != null) {
if (appModel.isStatus) {
val intent = Intent(applicationContext, UserRegistrationActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
preference!!.verify = true
preference!!.mobileNumber = mobileNo
intent.putExtra("mobileNo", mobileNo)
startActivity(intent)
} else {
C.showToast(applicationContext , appModel.message)
}
} else {
C.defaultError(applicationContext)
}
}
})
}
}
Как мне установить это сообщение в моем EditText
?