在android中实现twilio api的问题

Raj*_*Sen 5 android twilio

我想使用twilio api从android设备发送短信.我用那个代码 -

 TwilioRestClient client = new TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN);

    params = new HashMap<String,String>();
    params.put("From","+1 205-490-2571");
    params.put("To","9614549499");
    params.put("Body", "Bad news , the server is down and it needs your help");

    Account acct = client.getAccount();
    SmsFactory smsFactory = acct.getSmsFactory();
    Sms sms = null;
    try {
        sms = smsFactory.create(params);
    } catch (TwilioRestException e) {


e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我收到错误来初始化TwilioRestClient对象.我收到了这个错误

10-29 10:07:48.511: E/AndroidRuntime(354): FATAL EXCEPTION: main
10-29 10:07:48.511: E/AndroidRuntime(354): java.lang.NoSuchMethodError: org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.<init>
10-29 10:07:48.511: E/AndroidRuntime(354):  at com.twilio.sdk.TwilioRestClient.<init>(TwilioRestClient.java:139)
10-29 10:07:48.511: E/AndroidRuntime(354):  at com.twilio.sdk.TwilioRestClient.<init>(TwilioRestClient.java:110)
10-29 10:07:48.511: E/AndroidRuntime(354):  at com.twilio.twiliomessage.TwilioActivity$1.onClick(TwilioActivity.java:81)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.view.View.performClick(View.java:2485)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.view.View$PerformClick.run(View.java:9080)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.os.Handler.handleCallback(Handler.java:587)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.os.Handler.dispatchMessage(Handler.java:92)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.os.Looper.loop(Looper.java:123)
10-29 10:07:48.511: E/AndroidRuntime(354):  at android.app.ActivityThread.main(ActivityThread.java:3683)
10-29 10:07:48.511: E/AndroidRuntime(354):  at java.lang.reflect.Method.invokeNative(Native Method)
10-29 10:07:48.511: E/AndroidRuntime(354):  at java.lang.reflect.Method.invoke(Method.java:507)
10-29 10:07:48.511: E/AndroidRuntime(354):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-29 10:07:48.511: E/AndroidRuntime(354):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-29 10:07:48.511: E/AndroidRuntime(354):  at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

小智 1

我也在 Twilio 的开发者网络团队工作,并根据 Devin 所说的内容进行构建,包括您的身份验证令牌将是一个很大的安全风险。相反,我们要求您使用 TwiML 应用程序来接收功能令牌。TwiML 是一种非常直观的语言,如果您\xe2\x80\x99 感兴趣,我们在网上提供了一些示例。您可以使用功能令牌对您的设备与 Twilio 服务器进行的任何通信进行签名。您\xe2\x80\x99需要在此处向 Twilio 注册您的 TwiML 应用程序

\n\n

如果您\xe2\x80\x99使用Android设备,则应该使用我们的Android SDK与服务器通信。Here\xe2\x80\x99 是一个 Java 类示例,您可以使用它来使用 Twilio Android SDK。您可以在应用程序中引用此类中的方法来连接到服务器。(即 connect() 和 disconnect() )。

\n\n
import android.app.ProgressDialog;\nimport android.content.Context;\nimport android.util.Log;\nimport android.widget.ProgressBar;\nimport com.twilio.client.Connection;\nimport com.twilio.client.Device;\nimport com.twilio.client.DeviceListener;\nimport com.twilio.client.Twilio;\nimport org.apache.http.client.methods.HttpGet;\nimport org.apache.http.client.methods.HttpUriRequest;\nimport java.util.HashMap;\nimport java.util.Map;\n\n\npublic class TwilioAndroid implements Twilio.InitListener\n{\n   private Device mDevice;\n   private String TAG = "TwilioAndroid";\n   private Connection mConnection;\n   private Context mContext;\n\n    public TwilioAndroid(Context context)\n   {\n       this.mContext = context;\n       Twilio.initialize(context, this);\n   }\n//this will authenticate your device by going to the capability URL you\xe2\x80\x99ve provided //(https://www.your-web-app.com/token) and retrieving a capability token to sign further communications with. \n   @Override\n   public void onInitialized(){\n       Log.d(TAG, "Twilio SDK is ready");\n       new HttpHandler(){\n           @Override\n           public HttpUriRequest getHttpRequestMethod(){\n               Log.d(TAG, mContext.getString(R.string.app_capability_url));\n\n               return new HttpGet(mContext.getString(R.string.app_capability_url));\n           }\n\n           @Override\n           public void onResponse(String token) {\n               mDevice = Twilio.createDevice(token, null);\n               Log.d(TAG, "Capability token: " + token);\n           }\n       }.execute();\n   }\n\n   /* Twilio.InitListener method */\n   @Override\n   public void onError(Exception e) {\n       Log.e(TAG, "Twilio SDK couldn\'t start: " + e.getLocalizedMessage());\n   }\n\n//You can add more parameters to this custom method if necessary\n   public void connect(String phoneNumber)\n   {\n       Map<String, String> parameters = new HashMap<String, String>();\n       parameters.put("To", phoneNumber);\n//and you can add your other parameters here \n       mConnection = mDevice.connect(parameters, null);\n       if (mConnection == null)\n           Log.w(TAG, "Failed to create new connection");\n   }\n   public void disconnect()\n   {\n       if (mConnection != null) {\n           mConnection.disconnect();\n           mConnection = null;\n       }\n   }\n\n   @Override\n   protected void finalize()\n   {\n       if (mDevice != null)\n           mDevice.release();\n   }\n}\n
Run Code Online (Sandbox Code Playgroud)\n