2011-06-14 75 views
12

我用这个意图来拨打一个no,它写在意图的setdatafield 但是当我运行应用程序,然后单击呼叫按钮,我把这个意图我得到这个错误在logcat的Intent.ACTION_CALL问题(SecurityException)

06-14 14:08:10.137: ERROR/AndroidRuntime(2898): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:2125551212 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43edbe18 2898:com.collabera.labs.sai/10102} (pid=2898, uid=10102) requires android.permission.CALL_PHONE 
+0

请相应地格式化你的代码。谢谢! – Trufa 2011-06-14 16:33:49

回答

6

有错误的线索:requires android.permission.CALL_PHONE

您需要声明android.permission.CALL_PHONE许可,您的清单:

<manifest android:installLocation="preferExternal" package="yourpackage" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:versionCode="1" android:versionName="1"> 
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 
     . 
     . 
     . 
</manifest> 

有关更多信息,请参见here。在

1

添加权限您manifest.xml像这样

<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 

了解更多关于Permissionshere

2

,你也可以尝试

<uses-permission android:name="android.intent.action.CALL_PRIVILEGED"></uses-permission> 

它弃用不变,但它有助于开始呼叫瞬间无拨号器开放活动

+0

我想你说的是 Ajay 2015-10-07 10:55:26

28

Intent.ACTION_DIAL意图(而不是Intent.ACTION_CALL)不需要权限。它只提供拨号程序,因此用户可以自己决定是否拨打电话,无论如何这在大多数情况下都是更好的用户体验。

+0

天才,谢谢 – rxlky 2016-03-18 03:51:42

+0

这么小的细节,但是很重要的+1 – Sniper 2016-06-10 14:27:30

10
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:03000000000"));   
     startActivity(intent); 

添加权限

<uses-sdk android:minSdkVersion="7" /> 
<uses-permission android:name="android.permission.CALL_PHONE"/>