У меня проблема с телефонными звонками из службы переднего плана, и это мой вопрос об этом.
Как было предложено в комментариях к вопросу - я начал тестировать ConnectionService . Я добавил разрешение BIND_TELECOM_CONNECTION_SERVICE в файл манифеста.
Объявлен MyConnectionService
класс:
[Service(Permission= Manifest.Permission.BindTelecomConnectionService)]
public class MyConnectionService : ConnectionService
{
}
И затем я запускаю этот код:
var telecomManager = (TelecomManager)GetSystemService(Context.TelecomService);
var phoneAccountHandle = new PhoneAccountHandle(
new ComponentName(this.PackageName, nameof(MyConnectionService)), "MyApp");
var builder = new PhoneAccount.Builder(phoneAccountHandle, "CustomAccount");
var phoneAccount = builder.Build();
telecomManager.RegisterPhoneAccount(phoneAccount);
telecomManager.RegisterPhoneAccount(phoneAccount);
дает мне исключение:
Java.Lang.SecurityException: 'PhoneAccount connection service requires BIND_TELECOM_CONNECTION_SERVICE permission.'
Хорошо - похоже, разрешение не предоставлено. Тестирование с помощью ActivityCompat.CheckSelfPermission()
- да, оно не предоставлено.
Создание запроса на разрешение с ActivityCompat.RequestPermissions()
- оно выполняется и все. Нет запроса на разрешение экрана, нет способа предоставления на странице разрешения приложения.
Мой вопрос - как предоставить разрешение такого типа?
Среда:
- Android API Level 28
- Тестирование на телефоне Google Pixel 2 XL, работающем Android 10