CALL无法正常运作

CALL无法正常运作

我想通过单击菜单中的一个按钮来拨打电话。
该操作有效,但是不正确,因为当我单击按钮开始空白页时,当我单击后退按钮时,呼叫开始了!找不到错误,请您帮我吗?

这是我的代码:

/*Fare una telefonata*/
private void onCall() {
    int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);

    if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(
                this,
                new String[]{Manifest.permission.CALL_PHONE},
                123);
    } else {
        startActivity(new Intent(Intent.ACTION_CALL).setData(Uri.parse("tel:3314617839")));
    }
}
/*Dopo il risulato della richiesta di permesso*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {

        case 123:
            if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                onCall();
            } else {
                Log.d("TAG", "Call Permission Not Granted");
            }
            break;

        default:
            break;
    }
}


该按钮是:

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    int id=item.getItemId();
    switch(id)
    {
        case R.id.ContConc:
            onCall();


我有清单上的许可,实际上呼叫已开始,但我认为也许有些多余,我真的不知道!

最佳答案

我强烈建议您使用ACTION_DIAL,它将为您节省所有要求许可的东西:

public static void dialNumber(Context context, String number) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        intent.setData(Uri.parse("tel:" + number));
        context.startActivity(intent);
    }


但是如果您真的想打电话,您将需要做更多的工作,除非您的
        targetSdkVersion低于23。对于23及更高版本,您将需要实现Permission handler。然后,您可以使用如下方法:

 public static void callNumber(Context context, String number){
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:"+ number));

            if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
            context.startActivity(callIntent);
        }

关于android - ACTION_CALL无法正常运作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42518108/

10-13 01:11