You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin实现按钮拨打指定预设号码无响应问题求助

解决Android Kotlin中点击按钮拨打*#0*#无响应的问题

问题根源

*#0*#是安卓系统专属的硬件测试USSD代码,普通的ACTION_DIAL Intent仅负责打开拨号界面并填充号码,无法直接触发这类特殊代码的执行逻辑——这类代码需要直接发起呼叫请求才能激活系统的测试界面。此外,你当前的权限配置和Intent使用也存在适配问题。

解决方案

方案1:使用ACTION_CALL并处理动态权限(推荐)

ACTION_CALL会直接发起呼叫请求,但Android 6.0(API 23)及以上需要动态申请CALL_PHONE权限,步骤如下:

  1. 保留Manifest中的权限声明:
<uses-permission android:name="android.permission.CALL_PHONE"/>
  1. 修改Kotlin代码,添加权限检查与请求逻辑:
val button3 = findViewById<Button>(R.id.button3)
val testNumber = "*#0*#"

button3.setOnClickListener {
    // 检查是否已授权CALL_PHONE权限
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:$testNumber"))
        startActivity(intent)
    } else {
        // 动态申请权限
        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE), 100)
    }
}

// 处理权限请求结果
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if (requestCode == 100 && grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        // 权限通过后执行呼叫
        val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:$testNumber"))
        startActivity(intent)
    }
}

方案2:无权限的替代方案(部分系统支持)

如果不想申请CALL_PHONE权限,可以尝试使用ACTION_VIEW Intent,部分安卓系统支持通过该方式触发特殊USSD代码:

val button3 = findViewById<Button>(R.id.button3)

button3.setOnClickListener {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("tel:*#0*#"))
    startActivity(intent)
}

额外排查点

  • 确认按钮IDR.id.button3与布局文件中的ID完全一致,避免控件查找错误
  • 测试普通号码(如10086)是否能通过ACTION_DIAL正常打开拨号界面,排除按钮点击事件本身的问题
  • 检查父布局是否存在onTouch事件拦截,导致按钮点击未触发

内容的提问来源于stack exchange,提问作者Jonah Cameron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:05:12