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。
在我的 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。