Java 让Twilio监听设备启动时的来电
我已经在我的应用程序中集成了Twilio SDK。我可以在我的应用程序启动至少一次后接收来电 但是如果用户重新启动手机而不启动我的应用程序,我就无法通过电话联系到他Java 让Twilio监听设备启动时的来电,java,android,twilio,Java,Android,Twilio,我已经在我的应用程序中集成了Twilio SDK。我可以在我的应用程序启动至少一次后接收来电 但是如果用户重新启动手机而不启动我的应用程序,我就无法通过电话联系到他 如何让Twilio SDK监听来自设备启动的传入呼叫?(无需至少启动一次我的应用程序)Twilio客户端SDK不提供持久性服务 此外,Android SDK没有为用户应用程序的持久服务提供可靠的机制。系统应用程序可以持久化服务 然而,这个用例可以通过创建一个BroadcastReceiver并注册它来接收操作\u BOOT\u C
如何让Twilio SDK监听来自设备启动的传入呼叫?(无需至少启动一次我的应用程序)Twilio客户端SDK不提供持久性服务 此外,Android SDK没有为用户应用程序的持久服务提供可靠的机制。系统应用程序可以持久化服务 然而,这个用例可以通过创建一个BroadcastReceiver并注册它来接收
操作\u BOOT\u COMPLETED
来完成。广播接收机
然后将处理使客户端可用于接收呼叫的逻辑
com.example
公共类MyBroadcastReceiver扩展了BroadcastReceiver实现了DeviceListener{
专用设备客户端设备;
公共void onReceive(最终上下文、意图){
//您需要一种机制来检索此时间敏感令牌。
最终字符串功能ken=“您的\u JWT\u令牌”;
//初始化Twilio客户端SDK
initialize(context.getApplicationContext(),new Twilio.InitListener()){
@凌驾
首次公开无效(){
//创建设备
clientDevice=Twilio.createDevice(capabilityToken,MyBroadcastReceiver.this);
//为设备提供悬挂式帐篷
Intent Intent=新意图(context.getApplicationContext(),YourApplicationActivity.class);
PendingEvent PendingEvent=PendingEvent.getActivity(context.getApplicationContext(),0,intent,PendingEvent.FLAG_UPDATE_CURRENT);
clientDevice.setIncomingIntent(挂起内容);
}
@凌驾
公共无效申报人(例外e){
Log.e(“MyBroadcastReceiver”,e.toString());
}
});
//实现DeviceListener方法
}
}
或者,BroadcastReceiver可以启动一个服务,然后处理与Twilio客户端SDK相关的任何业务逻辑
<receiver
android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
com.example
public class MyBroadcastReceiver extends BroadcastReceiver implements DeviceListener {
private Device clientDevice;
public void onReceive(final Context context, Intent intent) {
// You'll need a mechanism to retrieve this time sensitive token.
final String capabilityToken = "YOUR_JWT_TOKEN";
// Initialize the Twilio Client SDK
Twilio.initialize(context.getApplicationContext(), new Twilio.InitListener() {
@Override
public void onInitialized() {
// Create a Device
clientDevice = Twilio.createDevice(capabilityToken, MyBroadcastReceiver.this);
// Providing a PendingIntent to the Device
Intent intent = new Intent(context.getApplicationContext(), YourApplicationActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
clientDevice.setIncomingIntent(pendingIntent);
}
@Override
public void onError(Exception e) {
Log.e("MyBroadcastReceiver", e.toString());
}
});
// Implements DeviceListener methods
}
}