Android Intent ACTION_CALL没有拨打电话

时间:2016-05-06 13:00:48

标签: android android-intent action android-dialer

在我的removeAllObjects应用程序中,我想在用户点击按钮时自动拨打电话。我已使用以下代码集来实现此功能

Android

并在我的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" />号打开拨号盘,而不是拨打电话。

4 个答案:

答案 0 :(得分:8)

至少在美国,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" />

答案 1 :(得分:0)

您必须在应用权限中设置电话为真。

答案 2 :(得分:-1)

请尝试使用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进行了更新。测试它,看它是否有效。我在你身上看到你的Manifest的许可部分。请考虑包含您的整个清单文件,以便我们可以看到一切正常。

答案 3 :(得分:-1)

我也有同样的问题。 最有可能的原因可能是我们的设备授予该应用程序的权限,然后它可能会起作用。只需转到设置并授予&#34; 电话&#34;的权限。