[实战] Android 发短信 - SMS-爱代码爱编程
短信有两种方式:一种是获得授权然后直接发送,pendingIntent监控结果,二是交给系统调用默认软件预填。
一. 短信-获得授权,直接发送
1. AndroidManifest.xml 注册授权
<uses-permission android:name="android.permission.SEND_SMS"/>
2。注册监听
var sentPI: PendingIntent? = null
sentPI = PendingIntent.getBroadcast(this, 0, Intent(SENT_SMS), 0)
registerReceiver(object : BroadcastReceiver() {
override fun onReceive(arg0: Context?, arg1: Intent?) {
when (getResultCode()) {
Activity.RESULT_OK -> Toast.makeText(baseContext, "SMS sent", Toast.LENGTH_SHORT).show()
SmsManager.RESULT_ERROR_GENERIC_FAILURE -> Toast.makeText(baseContext, "Generic failure", Toast.LENGTH_SHORT).show()
SmsManager.RESULT_ERROR_NO_SERVICE -> Toast.makeText(baseContext, "No service", Toast.LENGTH_SHORT).show()
SmsManager.RESULT_ERROR_NULL_PDU -> Toast.makeText(baseContext, "Null PDU", Toast.LENGTH_SHORT).show()
SmsManager.RESULT_ERROR_RADIO_OFF -> Toast.makeText(baseContext, "Radio off", Toast.LENGTH_SHORT).show()
else -> {
}
}
}
}, IntentFilter(SENT_SMS))
3. 处理授权返回
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
if (requestCode == REQUEST_SMS_PERMISSION) {
sendSMS("1111111111")
}
}
4. 最后sendSMS
fun sendSMS(num: String) {
if (num.isEmpty()) {
return
}
val smsManager: SmsManager = SmsManager.getDefault()
smsManager.sendTextMessage(
num,
null,
"test message",
sentPI,
null
)
}
二. 短信-预填
override fun onSMSPrePopulate() {
val num = "1111111111"
val smsIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:$num"))
smsIntent.putExtra("sms_body", "test message")
startActivity(smsIntent)
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/a66787237/article/details/111088209