kotlin getDefault()- DEPRECATION -替换什么?

gab6jxml  于 2023-08-06  发布在  Kotlin
关注(0)|答案(3)|浏览(110)

最近我开始学习用Kotlin编程语言为android系统编程。在编写一个简单的应用程序来从应用程序本身发送SMS时,我遇到了SmsManager.getDefault()现在是DEPRECATION的问题,因此,无法按照视频课程中的指示发送SMS。问题-现在如何从应用程序本身发送短信?我看了官方文档,但不明白解决方法。

package com.example.mysendsms

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.telephony.SmsManager
import com.example.mysendsms.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    lateinit var binding: ActivityMainBinding
    val sms = SmsManager.getDefault()

    override fun onCreate(savedInstanceState: Bundle?) {
        binding = ActivityMainBinding.inflate(layoutInflater)
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        binding.send.setOnClickListener {
            val textMsg = binding.message.toString().trim()
            val numberMsg = binding.number.toString().trim()
            sendSMS(textMsg,numberMsg)
        }
    }

    private fun sendSMS(text: String, number: String) {
            sms.sendTextMessage(number,null,text,null,null)
        }
    }
}

字符串

3hvapo4f

3hvapo4f1#

SmsManagergetDefault()方法仅从API 31开始被弃用,因此您仍应使用31以下的getDefault() API级别。

val smsManager: SmsManager = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            context.getSystemService(SmsManager::class.java)
        } else {
            SmsManager.getDefault()
        }

字符串

mrphzbgm

mrphzbgm2#

通过官方文档你可以得到这样的

val smsManager = context.getSystemService(SmsManager::class.java)

字符串

ubof19bj

ubof19bj3#

根据这个

...kotlin

val smsManager:SmsManager=
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M{
applicationContext.getSystemService(SmsManager::class.java)
} 
else {
SmsManager.getDefault()
}
...

字符串

相关问题