代码编织梦想

短信有两种方式:一种是获得授权然后直接发送,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

申请高德地图开发key-爱代码爱编程

**对于每一个使用高德地图进行的andriod应用开发,都需要在高德地图官网API申请自己的的key值。** 申请注册成为开发者 首先进入高德地图的开发平台(高德开放平台),通过相应的账号密码注册,申请成为开发者。申请应用key ①首先点开控制台,点击应用管理。 ②点击右上角创建应用,填写应用名称与应用类型。 ③点击右上角添加新Key(需要先看下一步获

Gradle插件踩坑-爱代码爱编程

Gradle插件踩坑 配置了很多次都不对? 举例AndroidSdudio下Gradle插件 插件要先定义,再使用 第一步:在app下build.gradle 最后面定义下面的插件 class DemoPlugin implements Plugin<Project> { @Override void apply(Pro

Jetpack架构组件库-LiveData实战与应用-总有适合你的方案-爱代码爱编程

前言 先前针对LiveData 组件从使用到原理都做了充分的解析,可以参考链接: Jetpack架构组件库-LiveData只一篇你就会用 Jetpack架构组件库-LiveData工作原理只一篇你就懂 可以发现在使用 LiveData 分发数据的时候,是不会耦合任何 Context 对象的,并且是生命周期感知的,所以: 这个机制就从框架层

Jetpack ---- App Startup源码解析-爱代码爱编程

Jetpack ---- App Startup源码解析 1. 解决的问题2. 使用App StartUp(1) 添加依赖(2) 实现Initializer< T >接口(3) 注册Provider和Initializer<?>3. App StartUp实现懒加载4. App StartUp源码解析5. App Start

Appium自动化测试 进阶-爱代码爱编程

所谓功能测试,其实无非是将被测APP的功能都使用一遍,看有没有出现报错,或者其他不应出现的结果。 上一个脚本已经实现了通过代码来使用APP的一些功能,理论上其实是已经在测试了,但还远谈不上“自动化”。因为,不是说不用手亲自去屏幕上一个功能一个功能地点点点就叫自动化,自动化是一种思想,一种将测试规范化,模块化的处理。前期的开发需要一些工作,但后期的维护,修改

Android - 秒懂TCP_UDP_IP_Socket-爱代码爱编程

背景 在涉及网络知识时总是记不太清相关概念,因此期望通过简短的文字描述,理解并记住相关概念。 TCP 属于七层协议中的传输层,是面向连接的协议。 面向连接意思就是通信双方建立连接才能通信,没建立连接不能通信。 因此是安全的。 安全可以指:能够知道通信双方,也可以指数据能够保证按顺序收到。 UDP 属于七层协议中的传输层,是面向无连接的协议。

Java与Kotlin代码的转换-爱代码爱编程

Java与Kotlin代码的转换 Java代码转Kotlin Java代码转Kotlin 利用AndroidStudio进行代码转化。不足点:只能按照基本的语法进行转换,不会自动应用Kotlin各种特性,这些特性还是需要手动去完成。 转化一段java代码:直接复制一段Java代码,然后复制到Kotlin文件进行粘贴,AndroidStud

Kotlin协程介绍-爱代码爱编程

前言 1. Kotlin协程是啥? 2. Kotlin协程具体介绍   2.0 Kotlin协程的优点   2.1 添加依赖   2.2 启动协程   2.3 协程作用域(CoroutineScope)   2.4 Job(作业)   2.5 CoroutineDispatcher(调度器)   2.6 suspen

Kotlin内联类-它是如何工作的以及我们该在什么场景使用它-爱代码爱编程

初看内联类 内联类非常的简单,您只需要在类的前面加上inline关键字就可以: inline class WrappedInt(val value: Int) 内联类有一些或多或少明显的限制:需要在主构造函数中精确指定一个属性,如value所示。 您不能在一个内联类中包装多个值。 内联类中也禁止包含init块,并且不能具有带有幕后字段的属性。 内联

EditText属性输入框Kotlin.Android-爱代码爱编程

EditText属性 输入框 <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext" /> 输入框提示文字

 ImageView展示图片Kotlin.Android-爱代码爱编程

 ImageView展示图片  ImageView属性 <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ImageView" android:src="@draw

ProgressBar进度条 Kotlin.Android-爱代码爱编程

ProgressBar进度条 ProgressBar属性 <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/progressbar1"