Android 行动呼吁不';t工作正常

Android 行动呼吁不';t工作正常,android,Android,我想点击菜单上的按钮打电话。 该操作可以正常工作,但不正常,因为当我单击按钮时,会启动一个空白页,当我单击“上一步”按钮时,会启动呼叫!我找不到错误,你能帮我吗 这是我的密码: /*Fare una telefonata*/ private void onCall() { int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE); if (permi

我想点击菜单上的按钮打电话。 该操作可以正常工作,但不正常,因为当我单击按钮时,会启动一个空白页,当我单击“上一步”按钮时,会启动呼叫!我找不到错误,你能帮我吗

这是我的密码:

/*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岁及以上的人,你需要实施一项新的计划。然后您可以使用如下方法:

 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);
        }

不久前我也在做同样的事情,但对我来说也不管用,所以我最终做了这样的事情:

 @Override
 public boolean onOptionsItemSelected(MenuItem item)
 {
int id=item.getItemId();
switch(id)
{
    case R.id.ContConc:
        public void onClick(View v) {
            String number = "+31612345678";
            Uri call = Uri.parse("tel:" + number);
            Intent call = new Intent(Intent.ACTION_DIAL, call);
            startActivity(call);
这与您想要的不完全相同,因为这将带您进入来电应用程序,并将电话号码输入数字变量

你也不必征得许可


希望这有帮助

@MariaNovellaMadia如果你想查看,我编辑了我的答案