Android 意图 ACTION_CALL 不进行 phone 调用

Android Intent ACTION_CALL not making a phone call

在我的 Android 应用程序中,我想在用户单击按钮时自动进行 phone 调用。我已经使用下面的一组代码来实现这个功能

Intent intent = new Intent(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel:911"));
                startActivity(intent);

并且在我的 AndroidManifest.xml 中我也添加了这个 <uses-permission android:name="android.permission.CALL_PHONE" /> 权限。

但它只是用给定的 911 否打开拨号盘,而不是拨打 phone 电话。

至少在美国,911 是一个紧急号码。 CALL_PHONE 不足以拨打该号码。有一个单独的权限(CALL_PRIVILEGED?),普通SDK应用程序无法拥有的权限。

更新:我没记错。这是该权限的 Android 6.0 平台清单条目:

<!-- @SystemApi Allows an application to call any phone number, including emergency
         numbers, without going through the Dialer user interface for the user
         to confirm the call being placed.
         <p>Not for use by third-party applications. -->
    <permission android:name="android.permission.CALL_PRIVILEGED"
        android:protectionLevel="signature|privileged" />

试试 Intent.ACTION_DIAL。这是我使用过的代码,效果很好:

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

通过添加 FLAG_ACTIVITY_NO_USER_ACTION 更新。测试它,看看它是否有效。我看到你在清单中包含了许可部分。请考虑包括您的整个清单文件,以便我们可以看到那里的一切都正常。

我也遇到了同样的问题。 很可能是因为我们的设备授予了该应用程序的权限,然后它才可以运行。只需转到设置并授予“电话”的权限。

您必须在应用权限中授予权限,将电话设置为 true。