6

在我的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" />权限。

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

4

4 回答 4

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" />
于 2016-05-06T13:02:28.943 回答
0

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

于 2016-05-06T13:15:12.797 回答
0

您必须在应用程序权限集电话中授予权限为 true。

于 2019-05-11T05:48:15.003 回答
-1

我也有同样的问题。很可能是因为我们的设备授予该应用程序的权限,然后它可能会工作。只需进入设置并授予“电话”权限即可。

于 2017-12-07T11:20:47.233 回答