Java 让Twilio监听设备启动时的来电

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监听来自设备启动的传入呼叫?(无需至少启动一次我的应用程序)

Twilio客户端SDK不提供持久性服务

此外,Android SDK没有为用户应用程序的持久服务提供可靠的机制。系统应用程序可以持久化服务

然而,这个用例可以通过创建一个BroadcastReceiver并注册它来接收
操作\u BOOT\u COMPLETED
来完成。广播接收机 然后将处理使客户端可用于接收呼叫的逻辑

  • 在AndroidManifest.xml中添加所需的权限:
  • 在元素下的AndroidManifest.xml中添加
  • 
    

    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 } }