android - 如何以编程方式调用紧急电话

标签 android phone-call

我可以通过以下代码调用一般电话号码:

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(intent);  

在 list 文件中,我添加如下权限:

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CALL_PRIVILEGED"/>

作为 android 的文档这样解释 CALL_PRIVILEGED:允许应用程序调用任何电话号码,包括紧急号码,而无需通过拨号器用户界面让用户确认正在调用的电话.不供第三方应用程序使用。

而我的应用程序位于packages/apps,所以它不是第三方应用程序,对吧?那么,为什么我每次调用“112”这样的紧急号码时仍然直接进入拨号盘而不是拨号用户界面?

最佳答案

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

Android Reference - Manifest Permission CALL_PRIVILEGED

一旦将其添加到 list 中,您应该能够使用相同的代码使用 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);

关于android - 如何以编程方式调用紧急电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770024/

相关文章:

java - 调用 MultipleAccountPublicClientApplication() 时,MSAL 引发 MsalClientException

java - 用关键字按图反向搜索

android - 我想阅读 android 中的通话记录

iphone - 如何从一个 iPhone 模拟器调用电话到另一个?

ios - 是否可以通过 iOS 应用程序确认电话是否已接听?

来自服务 Intent 的android startActivity

android - PhoneGap 和谷歌地图 API V3 "Disabled?"

android - 如何获取最近拨过的号码

ios - 如何在iOS设备中获取用户来电电话号码

android - 不知道为什么在android中执行的for语句中有条件