Android类ConnectionService

Nin*_*esh 7 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);
Run Code Online (Sandbox Code Playgroud)

现在我需要知道在请求feild和Connection服务中将给出的内容如何在它之前实现..

san*_*osc 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支持中.

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

1)创建ConnectionService的实现

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

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

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

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


Moh*_*Syd -2

要打开拨号器,我们需要使用Intent,这里要执行的操作是ACTION_DIAL,提供的数据是电话号码,显式发起呼叫。下面是执行此操作的代码片段。

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+phnum)); 
Run Code Online (Sandbox Code Playgroud)

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

startActivity(callIntent);
Run Code Online (Sandbox Code Playgroud)

Android 调用权限 此权限声明需要添加到AndroidManifest.xml中

<uses-permission android:name="android.permission.CALL_PHONE" />
Run Code Online (Sandbox Code Playgroud)