Android 在安卓系统中点击按钮拨打电话

Android 在安卓系统中点击按钮拨打电话,android,android-intent,Android,Android Intent,我已经在我的应用程序中实现了一个电话服务,当我们点击该按钮时,它是一个按钮。它将拨打电话,但问题是它不支持某些设备上的所有设备。它工作正常,在某些设备上它不工作。现在为我提供任何解决方案,让它在所有设备上工作。 这是我的密码 请确保在你的应用程序清单中为棒棒糖前设备添加以下权限 <uses-permission android:name="android.permission.CALL_PHONE" /> 请求权限 <uses-permission android:name

我已经在我的应用程序中实现了一个电话服务,当我们点击该按钮时,它是一个按钮。它将拨打电话,但问题是它不支持某些设备上的所有设备。它工作正常,在某些设备上它不工作。现在为我提供任何解决方案,让它在所有设备上工作。 这是我的密码


请确保在你的应用程序清单中为棒棒糖前设备添加以下权限

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

请求权限

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

  private void requestPermission() {
    ActivityCompat.requestPermissions(this, new String[]
{Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}, 
PERMISSION_REQUEST_CODE);
}


 private void requestPermissions() {
    ActivityCompat.requestPermissions(this, new String[]
 {Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}, 
 PERMISSION_REQUEST_CODES);
} 


 private boolean checkCallPhonePermission() {
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}

private boolean checkReadStatePermission() {
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}



  @Override
 public void onRequestPermissionsResult(int requestCode, String 
 permissions[], int[] grantResults) {
    switch (requestCode)
    {
        case PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && grantResults[0] == 
 PackageManager.PERMISSION_GRANTED) {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:" + 123456789
                startActivity(callIntent);
            }
            break;
  }

  }

请换成这个-

public class SOSCallHelp extends AppCompatActivity {
    private Button call1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_soscall_help);
        call1 = (Button) findViewById(R.id.call1);

        call1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:9078784565"));
                if (ActivityCompat.checkSelfPermission(SOSCallHelp.this,
                        Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)

                {
                    return;
                }
                PackageManager packageManager = getActivity().getPackageManager();
                if (callIntent.resolveActivity(packageManager) != null) {
                    startActivity(callIntent);
                } else {
                    Log.d("SOSCallHelp", "No Intent available to handle this action");
                }


            }
        });
    }
}
只需使用:

 private static int REQUEST_CALL_PHONE = 111;

 private void requestCallPhonePermission() {
    String callPermission = android.Manifest.permission.CALL_PHONE;
    int hasPermission = ContextCompat.checkSelfPermission(SOSCallHelp.this, callPermission);
    String[] permissions = new String[]{callPermission};
    if (hasPermission != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(permissions, REQUEST_CALL_PHONE);
    } else {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:9078784565"));
        startActivity(intent);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == REQUEST_CALL_PHONE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:9078784565"));
            startActivity(intent);
        } else {
            Toast.makeText(SOSCallHelp.this, "CALL_PHONE DENIED", Toast.LENGTH_SHORT).show();

        }
    }

}
现在在单击按钮时调用此函数
requestCallPhonePermission()

在清单文件中添加

权限。

某些设备不工作
什么问题??让我猜一下,它在新的安卓版本上不起作用?你给安卓6.0权限了吗?我没有给6.0权限,在哪里给@RameshApp在一些设备上没有崩溃,它在按钮点击时打电话,在一些设备上按钮点击时什么也没有发生。这就是问题所在。我已经尝试了上面所有的代码,但没有人工作使用权限android:name=“android.permission.ACTION\u CALL”操作调用在清单默认权限中不可用/将此权限放在清单中并在代码上方使用我已经放置了此权限,但它仍然无法识别符号ACTION\u CALLIntent intent=new intent(intent.ACTION\u DIAL,Uri.parse(“电话:”+“+123456789”)); 星触觉(意向);使用此密码打开ATLAT拨号屏幕,同时拨打电话号码,但不打电话,这给了安全例外不完全。这里发生的情况是,在某些设备上,它在其他设备上呼叫成功,但在某些设备上,它只拨打号码,但无法连接到拨号器屏幕上的特定“否”。如果您有任何解决此版本支持问题的想法,请让我知道。谢谢。@AnkitaSethi告诉我它不工作的android操作系统版本。它将在所有设备中工作。这是我的工作代码Android版本6.0,型号名称Lenovo K50a40,还有一些其他更高版本,但在4.2.2中工作properly@AnkitaSethi你用我的密码了吗??你能把你的密码寄给我吗?
  private void requestPermission() {
    ActivityCompat.requestPermissions(this, new String[]
{Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}, 
PERMISSION_REQUEST_CODE);
}


 private void requestPermissions() {
    ActivityCompat.requestPermissions(this, new String[]
 {Manifest.permission.CALL_PHONE, Manifest.permission.READ_PHONE_STATE}, 
 PERMISSION_REQUEST_CODES);
} 


 private boolean checkCallPhonePermission() {
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}

private boolean checkReadStatePermission() {
    int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
    if (result == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}



  @Override
 public void onRequestPermissionsResult(int requestCode, String 
 permissions[], int[] grantResults) {
    switch (requestCode)
    {
        case PERMISSION_REQUEST_CODE:
            if (grantResults.length > 0 && grantResults[0] == 
 PackageManager.PERMISSION_GRANTED) {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:" + 123456789
                startActivity(callIntent);
            }
            break;
  }

  }
public class SOSCallHelp extends AppCompatActivity {
    private Button call1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_soscall_help);
        call1 = (Button) findViewById(R.id.call1);

        call1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:9078784565"));
                if (ActivityCompat.checkSelfPermission(SOSCallHelp.this,
                        Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)

                {
                    return;
                }
                PackageManager packageManager = getActivity().getPackageManager();
                if (callIntent.resolveActivity(packageManager) != null) {
                    startActivity(callIntent);
                } else {
                    Log.d("SOSCallHelp", "No Intent available to handle this action");
                }


            }
        });
    }
}
 private static int REQUEST_CALL_PHONE = 111;

 private void requestCallPhonePermission() {
    String callPermission = android.Manifest.permission.CALL_PHONE;
    int hasPermission = ContextCompat.checkSelfPermission(SOSCallHelp.this, callPermission);
    String[] permissions = new String[]{callPermission};
    if (hasPermission != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(permissions, REQUEST_CALL_PHONE);
    } else {
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:9078784565"));
        startActivity(intent);
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == REQUEST_CALL_PHONE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:9078784565"));
            startActivity(intent);
        } else {
            Toast.makeText(SOSCallHelp.this, "CALL_PHONE DENIED", Toast.LENGTH_SHORT).show();

        }
    }

}