Android类ConnectionService

时间:2015-09-21 10:46:51

标签: android android-6.0-marshmallow

任何人都可以举例说明如何实现这个抽象类 - ConnectionService.my的想法是使用TelecomManager拨打电话。

https://developer.android.com/reference/android/telecom/ConnectionService.html#SERVICE_INTERFACE

TelecomManager telecomManager = (TelecomManager)this.getSystemService(Context.TELECOM_SERVICE);
        PhoneAccountHandle accountHandle=telecomManager.getSimCallManager();
        PhoneAccount account=telecomManager.getPhoneAccount(accountHandle);
        telecomManager.registerPhoneAccount(account);

        CharSequence label=account.getLabel();
        ConnectionRequest request = null;

        Connection connection= service.onCreateOutgoingConnection(accountHandle,request);

现在我需要知道请求feild和Connection服务将在它之前实现的方式..

2 个答案:

答案 0 :(得分:6)

它的目的不是让其他应用程序拨打电话。支持的方法是通过Intent.ACTION_CALL,如另一个答案中所述。

TelecomManager上有一个用于发出呼叫的API,但与直接发送Intent没有什么不同。有关TelecomManager.placeCall的更多信息:http://developer.android.com/reference/android/telecom/TelecomManager.html#placeCall

关于ConnectionService:

ConnectionService API的主要目的是将第三方VoIP呼叫包含到系统拨号程序中,以便蜂窝呼叫和第三方VoIP呼叫可以并排生存,用户可以在它们之间切换。实现此API的VoIP应用程序可以通过将其呼叫视为传统的蜂窝呼叫来获益,包括将它们显示在内置系统拨号器/通话中UI,呼叫日志,Android Wear支持和Android Auto支持中。 / p>

如果您是第三方VoIP应用程序,希望他们的呼叫与传统的蜂窝呼叫并排,那么您会:

1)创建ConnectionService的实现

2)在AndroidManifest.xml文件中声明该服务

3)使用您的ConnectionService组件名称注册PhoneAccount

更多信息:http://developer.android.com/reference/android/telecom/ConnectionService.html

然后,用户可以通过拨号程序设置打开您的特定电话帐户,现在您的连接服务可以让您的用户通过您自己的VoIP服务拨打和接听电话。

答案 1 :(得分:-1)

要打开拨号器,我们需要使用Intent,此处要执行的操作是ACTION_DIAL,要提供的数据是电话号码,它会明确启动呼叫。以下是执行此操作的代码段。

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+phnum)); 

phnum是这里通过editText组件拨打的号码。最后,我们应该开始如下所示的活动:

startActivity(callIntent);

Android权限拨打电话 需要将此权限声明添加到AndroidManifest.xml

<uses-permission android:name="android.permission.CALL_PHONE" />