按按钮自动呼叫

时间:2017-01-27 09:09:06

标签: android

您好我正在尝试制作允许我自动拨打电话的按钮

这就是我实际打电话的方式

String number = "1234";
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel",number,null));
startActivity(intent);

但我必须通过按拨号器中的电话图标确认拨打电话。是否有可能使其自动化?

2 个答案:

答案 0 :(得分:0)

使用操作Intent.ACTION_CALL,所以,改变这个:

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel",number,null));

有了这个:

Intent intent = new Intent(Intent.ACTION_CALL, Uri.fromParts("tel",number,null));

添加权限:

if (ContextCompat.checkSelfPermission(this,
            Manifest.permission.CALL_PHONE)
    != PackageManager.PERMISSION_GRANTED) {

// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
        Manifest.permission.CALL_PHONE)) {

    // Show an explanation to the user *asynchronously* -- don't block
    // this thread waiting for the user's response! After the user
    // sees the explanation, try again to request the permission.

} else {

    // No explanation needed, we can request the permission.

    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.CALL_PHONE},
            1);

  }
}

处理许可:

@Override
public void onRequestPermissionsResult(int requestCode,
                                       @NonNull String permissions[],
                                       @NonNull int[] grantResults) {
    switch (requestCode) {
        case 1: {
            if ((grantResults.length > 0) && (grantResults[0] +
                    grantResults[1]) == PackageManager.PERMISSION_GRANTED) {
                //Call whatever you want

            } 
        }
    }
}

答案 1 :(得分:0)

试试这段代码,它会对你有帮助。

String number = "1234";

在Uri获取号码

Uri numberUri = Uri.parse("tel:"+number);

拨号代码

Intent callIntent = new Intent(Intent.ACTION_DIAL, numberUri);
startActivity(callIntent);

致电代码

Intent callIntent = new Intent(Intent.ACTION_CALL, numberUri);
startActivity(callIntent);

修改

在棉花糖中,你必须获得运行时间的许可才能打电话。 如果权限被拒绝,则无法拨打电话。

现在还有其他解决方案我想给你。

  

您可以在6.0或更高版本中进行自动呼叫,而无需获得运行时权限。但为此,您必须将targetSdkVersion设置为19或低于22。那么会发生什么,所有权限都将自动启用,因为Android OS会将其作为旧应用程序并允许,而不会获得运行时权限。

     
    

但还有一个问题。通过进行设置手动禁用权限后,它将无法工作。