在 Android 中拨打 911

问题描述 投票:0回答:4

我想使用 Android SDK 拨打紧急电话。

我正在使用以下代码拨打号码 (911)。此代码适用于除 911(紧急号码)以外的所有号码。当我使用 911 时,它会显示我不想要的拨号器屏幕。是否有任何程序可以在不打开拨号器的情况下拨打 911,或者我们可以阻止用户在拨号器屏幕中编辑号码吗?

Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_DIAL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);
android android-intent dialog android-permissions phone-call
4个回答
7
投票

提供的代码应该已经适用于此,但您需要 CALL_PHONE 和 CALL_PRIVILEGED 权限才能在不显示拨号盘的情况下拨打紧急号码。

Android 参考 - 清单权限 CALL_PRIVILEGED

一旦将其添加到清单中,您应该能够使用相同的代码使用 ACTION_CALL 而不是直接拨号:

Uri callUri = Uri.parse("tel://911");
Intent callIntent = new Intent(Intent.ACTION_CALL,callUri);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_USER_ACTION);
startActivity(callIntent);

7
投票

Action_Dial 将打开拨号盘,Action_Call 将直接呼叫..

然而,引自ACTION_CALL

注意:此 Intent 不能用于 拨打紧急电话。应用 可以拨打紧急号码使用 然而,ACTION_DIAL。


0
投票

Intent.ACTION_CALL
insted
Intent.ACTION_DIAL
这将呼叫号码而不显示在拨号盘上。


0
投票
private fun startCall() {
    val callIntent = Intent(Intent.ACTION_CALL)
    callIntent.data = Uri.parse("tel:$phoneEmergency")
    startActivity(callIntent)
}

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if(requestCode == REQUEST_PHONE_CALL) startCall()
}

en el oncreate uso los bindings

binding.btnEmergency.setOnClickListener {

        if(ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE), REQUEST_PHONE_CALL)
        }else{
            startCall()
        }
© www.soinside.com 2019 - 2024. All rights reserved.