Разрешение на вызов не работает - Как сделать телефонный звонок в приложении для Android Studio? - PullRequest
0 голосов
/ 30 марта 2020
    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");
            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);

Этот код выше регистрирует в консоли, что он не работает, но у меня есть разрешение для CALL_PHONE в моем файле манифеста. Я не уверен ни в каких других разрешениях, которые мне понадобятся, или если код просто неверен? Пожалуйста, помогите, спасибо.

1 Ответ

0 голосов
/ 31 марта 2020

Итак, если разрешение есть, тогда все в порядке, но что, если разрешения нет?

Затем вам нужно запросить разрешения с помощью 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);
}
 }

Итак, этот код даст пользователю всплывающее окно с сообщением, что устройство имеет доступ к или принимать телефонные звонки. Если вы дадите разрешение, будет запущена операция менеджера вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...