我正在尝试实现ConnectionService、PhoneAccount和PhoneAccountHandle以获取我的外拨电话的断开原因(例如:用户拒绝接听、无法连接等)。到目前为止,我已经能够使用customPhoneAccount发起电话呼叫,但该电话呼叫从未连接,因此我无法获取响应。
以下是我目前编写的代码:
register()是从我的Activity调用以注册电话账户的方法:
register()是从我的Activity调用以注册电话账户的方法:
public void register() {
TelecomManager manager = (TelecomManager) getSystemService(TELECOM_SERVICE);
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(
new ComponentName(getPackageName(),
MyConnectionService.class.getName()), "myConnectionServiceId");
PhoneAccount.Builder builder = PhoneAccount.builder(phoneAccountHandle, "CustomAccount");
builder.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER | PhoneAccount.CAPABILITY_CONNECTION_MANAGER);
PhoneAccount phoneAccount = builder.build();
manager.registerPhoneAccount(phoneAccount);
}
call()方法用于发起调用:
public void call() {
TelecomManager manager = (TelecomManager) getSystemService(TELECOM_SERVICE);
PhoneAccountHandle phoneAccountHandle = new PhoneAccountHandle(
new ComponentName(getPackageName(),
MyConnectionService.class.getName()), "myConnectionServiceId");
Bundle test = new Bundle();
test.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
manager.placeCall(Uri.parse("tel:" + "1212312312"), test);
}
这是我的连接服务:
public class MyConnectionService extends ConnectionService {
public static final String TAG = MyConnectionService.class.getName();
@Override
public int onStartCommand(Intent intent,int flags, int startId) {
Log.d(TAG, "On Start");
return super.onStartCommand(intent, flags, startId);
}
@Override
public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
Connection connection = super.onCreateOutgoingConnection(connectionManagerPhoneAccount, request);
Log.d(TAG, connection.getDisconnectCause().getReason());
return connection;
}
@Override
public void onCreateOutgoingConnectionFailed(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) {
if (request != null) {
Log.d(TAG, request.toString());
}
super.onCreateOutgoingConnectionFailed(connectionManagerPhoneAccount, request);
}
我已经尝试了不同的功能以及所有在其他与ConnectionService相关的线程中提到的选项,但是我无法得到期望的结果,有人能帮助我吗?
super.onCreateOutgoingConnection
返回了 null 呢? - Displee