我可以通过以下代码调用一般电话号码:
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_PHONE
和 CALL_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/