可以直接打电话吗?

时间:2017-01-21 17:39:33

标签: android

我们知道您可以使用以下代码打开呼叫应用程序:

startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:0377778888")));

是否可以直接拨打电话而无需通过设备的默认应用程序?

4 个答案:

答案 0 :(得分:3)

此代码段直接调用:

// Check the SDK version and whether the permission is already granted or not.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, PERMISSIONS_REQUEST_PHONE_CALL);
} else {
    //Open call function
    String phone = "7769942159";
    Intent intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:+91" + phone));
    startActivity(intent);
}

在清单中使用此权限:

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

答案 1 :(得分:2)

是的,您只需在代码中将Intent.ACTION_DIAL替换为Intent.ACTION_CALL即可。 您必须获得该应用的CALL权限。 对于Marshmallow以下的设备,只需将清单下方的行放在清单标记下

即可

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

但对于Marshmallow或以上的OS设备,您需要在清单中声明权限,如下所示

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

您需要询问用户对CALL_PHONE访问的运行时权限。 要求许可

ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.CALL_PHPNE})

检查权限

ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.CALL_PHONE)
        != PackageManager.PERMISSION_GRANTED

了解更多信息https://developer.android.com/training/permissions/requesting.html

答案 2 :(得分:1)

答案 3 :(得分:1)

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

Android Manifest

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