Ниже приведен код для PhoneAccount и ConnectionService. ,
Код: Выделить всё
@RequiresApi(api = Build.VERSION_CODES.M)
private void registerConnectionService() {
try {
TelecomManager manager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
String connectionServiceId = getConnectionServiceId();
ComponentName componentName = new ComponentName(getApplicationContext(), MyService.class);
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(componentName, "Dialer");
phoneAccount = manager.getPhoneAccount(phoneAccountHandle);
// Log.i("phoneAccountTekV",phoneAccount.getAddress()+" "+phoneAccount.getCapabilities()+" "+phoneAccount.getLabel());
if (phoneAccount == null) { // no phone account from us registered yet
PhoneAccount.Builder builder = PhoneAccount.builder(phoneAccountHandle, "Dialer");
Uri uri = Uri.parse("tel:123456789");
//builder.setSubscriptionAddress(uri);
//builder.setAddress(uri);
builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER);
phoneAccount = builder.build();
manager.registerPhoneAccount(phoneAccount);
Log.i("phoneAccount", "" + phoneAccount.isEnabled());
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.server.telecom",
"com.android.server.telecom.settings.EnableAccountPreferenceActivity"));
startActivity(intent);
}
Log.i("is phoneAccountEnabled", "" + phoneAccount.isEnabled());
} catch (SecurityException se) {
Log.e("registerPhoneAccount", "SecurityException: Ensure all necessary permissions are granted", se);
} catch (IllegalArgumentException iae) {
Log.e("registerPhoneAccount", "IllegalArgumentException: Ensure the PhoneAccount is properly configured", iae);
} catch (RuntimeException re) {
Log.e("registerPhoneAccount", "RuntimeException: An unexpected error occurred", re);
} catch (Exception re) {
Log.e("registerPhoneAccount", "Exception: An unexpected error occurred", re);
}
}
Код: Выделить всё
@RequiresApi(api = Build.VERSION_CODES.Q)
@RequiresPermission(value = "android.permission.READ_PHONE_STATE")
@Override
public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest originalRequest) {
Uri handle = originalRequest.getAddress();
MyConnection connection = new MyConnection(false, originalRequest,this);
connection.setAddress(handle, TelecomManager.PRESENTATION_ALLOWED);
//connection.setConnectionProperties(Connection.PROPERTY_SELF_MANAGED);
// connection.setDialing();
connection.setInitializing();
connection.setConnectionCapabilities(Connection.CAPABILITY_HOLD | Connection.CAPABILITY_MUTE | Connection.CAPABILITY_SUPPORT_HOLD);
connection.setVideoState(originalRequest.getVideoState());
addCall(connection);
TelecomManager manager = (TelecomManager) getSystemService(Context.TELECOM_SERVICE);
boolean isOut = manager.isOutgoingCallPermitted(connectionManagerPhoneAccount);
Log.i("phoneAccountTekV",connectionManagerPhoneAccount.getUserHandle().toString());
//setAddress(connection,handle);
Log.i("isOutgoingCallPermitted"," isOutgoingCallPermitted-"+isOut);
PhoneAccountHandle ph = manager.getUserSelectedOutgoingPhoneAccount();
List
selfHandles =manager.getSelfManagedPhoneAccounts();
List handles =manager.getCallCapablePhoneAccounts();
connection.startOutgoing();
return connection;
}
12:27:49.085 1563-1563/? W/Telecom: Call: запрос mayOnInCallServiceTrackingChanged() при вызове без службы соединения.: ICSBC.oSC(cgag)@C/U
2024-06-24 12:27:49.085 1563-1563/? W/Telecom: Вызов: запрос mayOnInCallServiceTrackingChanged() при вызове без службы соединения.: ICSBC.oSC(cgaa)@C/Y
24 июня 2024 12:27:49.091 1563-6781/? W/WindowManager: подготовка перехода приложения: mNextAppTransitionRequests=[TRANSIT_OPEN, TRANSIT_OPEN], mNextAppTransitionFlags=, displayId: 0 Callers=com.android.server.wm.DisplayContent.prepareAppTransition:6493 com.android.server.wm.TaskFragment.resumeTopActivity:1573 com.android.server.wm.TaskFragment.resumeTopActivity:1307 com.android.server.wm.Task.resumeTopActivityInnerLocked:6451 com.android.server.wm.Task.resumeTopActivityUncheckedLocked:6352
24 июня 2024 г. 12: 27:49.091 1563-6781/? W/ActivityTaskManager: пытался установить launchTime (0) < mLastActivityLaunchTime (1105139)
24 июня 2024 12:27:49.096 1563-1563/? W/Telecom: Вызов: запрос mayOnInCallServiceTrackingChanged() при вызове без службы соединения.: TSI.pC->CM.fOCP->CM.sOCPA->CM.dSMCP->CM.dSPA->CM.sRCQ->CM .pASP(ctd)@C/M
24 июня 2024 12:27:49.096 1563-1563/? W/Telecom: Вызов: запрос mayOnInCallServiceTrackingChanged() при вызове без службы соединения.: TSI.pC->CM.fOCP->CM.sOCPA->CM.dSMCP->CM.dSPA->CM.sRCQ->CM .pASP(ctd)@C/M
24 июня 2024 12:27:49.097 1563-6781/? W/WindowManager: выполнить переход приложения: mNextAppTransitionRequests=[TRANSIT_OPEN, TRANSIT_OPEN], mNextAppTransitionFlags=, displayId: 0 Callers=com.android.server.wm.RootWindowContainer.executeAppTransitionForAllDisplay:2580 com.android.server.wm.ActivityTaskSupervisor.reportResumedActivityL заблокирован: 2287 com.android.server.wm.ActivityRecord.completeResumeLocked:6987 com.android.server.wm.Task.minimalResumeActivityLocked:6156 com.android.server.wm.ActivityTaskSupervisor.realStartActivityLocked:1137
24 июня 2024 г. 12: 27:49.098 1563-1563/? W/Telecom: Вызов: запрос mayOnInCallServiceTrackingChanged() при вызове без службы соединения.: TSI.pC->CM.fOCP->CM.sOCPA->CM.dSMCP->CM.dSPA->CM.sRCQ->CM .pASP(ctd)@C/M
24 июня 2024 12:27:49.099 1224-1461/? W/SecAudioParamPolicy: g_volume_situation_key: не поддерживаются устаревшие тома ситуаций
2024-06-24 12:27:49.099 32494-32494/? E/m.samsung.crane: Отладчик не запускается, так как процесс не может загрузить агент jdwp.
24.06.2024 12:27:49.102 9896-9925/? E/BluetoothAdapterService: getActiveDevices: HearingAidService имеет значение null
2024-06-24 12:27:49.107 1563-1563/? W/Telecom: Ведение журнала: Log.endSession был вызван без активного сеанса.
2024-06-24 12:27:49.110 9896-9925/? E/BluetoothAdapterService: getActiveDevices: HearingAidService имеет значение null
W/ContextImpl: вызов метода в системном процессе без квалифицированного пользователя: android.app.ContextImpl.sendBroadcast:1252 com.android.server.notification.sec .DisplayToast.sendIntentForToastDumpLog:156 com.android.server.notification.sec.DisplayToast.outFile:106 com.android.server.notification.sec.DisplayToast.out:62 com.android.server.notification.NotificationManagerService$12.enqueueToastForDex:3989
24.06.2024 12:27:49.507 5214-5307/? W/Parcel: Ожидается подшивка, но получено нулевое значение!
2024-06-24 12:27:49.513 677-677/? W/keymaster_tee: [WRN]begin req PARAMS: A32 B32 P1
24 июня 2024 12:27:49.521 677-677/? W/keymaster_tee: [WRN]begin req PARAMS: A32 B32 P1
24 июня 2024 12:27:49.529 1121-1121/? E/Sensors: inject_scontext_data: Новый ssp_data_injection_fd(44)
24.06.2024 12:27:49.530 1563-1718/? W/BroadcastQueue: фоновое выполнение запрещено: получение намерения { act=com.samsung.rcs.contentsharing.action.NUMBER_TOKEN flg=0x10 (есть дополнительные возможности) } в com.samsung.crane/.app.PhoneNumberReceiver
2024- 06-24 12:27:49.536 1563-1718/? W/BroadcastQueue: отказ в разрешении: получение намерения { act=android.intent.action.PHONE_STATE flg=0x1000010 (есть дополнительные возможности) } в ProcessRecord{b77a6ce 6726:com.samsung.android.app.cocktailbarservice/u0a52} (pid=6726, uid=10052) требуется android.permission.READ_PHONE_STATE из-за отправителя android (uid 1000)
2024-06-24 12:27:49.537 1563-1718/? W/BroadcastQueue: отказ в разрешении: получение намерения { act=android.intent.action.PHONE_STATE flg=0x1000010 (есть дополнительные возможности) } в ProcessRecord{b77a6ce 6726:com.samsung.android.app.cocktailbarservice/u0a52} (pid=6726, uid=10052) требуется android.permission.READ_PHONE_STATE из-за отправителя android (uid 1000)
2024-06-24 12:27:49.537 9896-18745/? E/BluetoothAdapterService: getActiveDevices: HearingAidService имеет значение null
может кто-нибудь мне помочь?
Подробнее здесь: https://stackoverflow.com/questions/786 ... -outgoingc