gpt4 book ai didi

java - Telephonymanager.EXTRA_INCOMING_NUMBER 在 API 级别 29 中已弃用

转载 作者:行者123 更新时间:2023-12-04 23:53:07 27 4
gpt4 key购买 nike

我需要在 Android 中识别来电电话号码,但使用 TelephonyManager.EXTRA_INCOMING_NUMBER android studio 警告 EXTRA_INCOMING_NUMBER 已弃用。我通过了开发人员.android.com,它显示执行调用筛选的应用应使用 CallScreeningService API。但我不知道如何使用 CallScreeningService 来获取来电电话号码。谁能帮帮我?

最佳答案

正如@Saurabh 所说,筛选调用的新方法是通过CallScreeningService。但是,要在 Android Q 及更高版本上运行该服务,用户需要将您的应用设置为默认来电显示和垃圾邮件应用(通过使用新的 RoleManager 类完成)

  1. 注册您的筛查服务:

     <service android:name="com.example.ScreeningService"
    android:permission="android.permission.BIND_SCREENING_SERVICE">
    <intent-filter>
    <action android:name="android.telecom.CallScreeningService"/>
    </intent-filter>
    </service>
  2. 创建你的服务类:

     @RequiresApi(api = Build.VERSION_CODES.N)
    class ScreeningService : CallScreeningService() {

    override fun onScreenCall(details: Details) {
    //code here
    }

    }
  3. 在您的主要 Activity (或您认为合适的任何地方)中向用户请求筛选角色:

     @RequiresApi(Build.VERSION_CODES.Q)
    private fun requestScreeningRole(){
    val roleManager = getSystemService(Context.ROLE_SERVICE) as RoleManager
    val isHeld = roleManager.isRoleHeld(RoleManager.ROLE_CALL_SCREENING)
    if(!isHeld){
    //ask the user to set your app as the default screening app
    val intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_CALL_SCREENING)
    startActivityForResult(intent, 123)
    } else {
    //you are already the default screening app!
    }
    }
  4. 捕捉用户的 react :

     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
    123 -> {
    if (resultCode == Activity.RESULT_OK) {
    //The user set you as the default screening app!
    } else {
    //the user didn't set you as the default screening app...
    }
    }
    else -> {}
    }
    }

对使用硬编码请求代码表示歉意>。<

关于java - Telephonymanager.EXTRA_INCOMING_NUMBER 在 API 级别 29 中已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62995702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com