Итак, если разрешение есть, тогда все в порядке, но что, если разрешения нет?
Затем вам нужно запросить разрешения с помощью requestPermissions ()
Что-то вроде: -
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, requestCode)
Затем переопределите метод onRequestPermissionsResult (), чтобы выполнить необходимые действия после предоставления разрешения (здесь вы можете запустить действие, используя намерение совершить телефонный звонок).
Таким образом, вы можете сделать что-то вроде: -
int requestCode = 0;
public void onClick(View view)
{
if (view.getId() == R.id.button && ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
{
Log.d("STATE", "Call Button DOES NOT WORK");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, requestCode);
return;
}
Log.d("STATE", "Call Button DOES WORK");
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:480-240-9255"));
startActivity(callIntent);
}
Затем,
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == requestCode)
{
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:480-240-9255"));
startActivity(callIntent);
}
}
Итак, этот код даст пользователю всплывающее окно с сообщением, что устройство имеет доступ к или принимать телефонные звонки. Если вы дадите разрешение, будет запущена операция менеджера вызовов.