Intent.ACTION_CALL问题(SecurityException)

时间:2011-06-14 08:40:05

标签: android

我使用此意图来拨打在Intent的setdatafield中写入的no 但是,当我运行应用程序并单击调用按钮,我把这个意图我在LogCat中得到了这个错误

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

5 个答案:

答案 0 :(得分:29)

Intent.ACTION_DIAL意图(而不是Intent.ACTION_CALL)不需要权限。它只会调出拨号器,因此用户可以决定是否打电话,这在大多数情况下都是更好的用户体验。

答案 1 :(得分: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"/>

答案 2 :(得分: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

答案 3 :(得分:2)

你也可以尝试

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

它被弃用了常量,但它有助于在没有拨号器活动开启的情况下立即开始呼叫

答案 4 :(得分:1)

在您的manifest.xml中添加权限

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

详细了解Permissions here