好的。我正在通过我的应用程序发送短信。发送完短信后,它会将状态更新发送到服务器。这部分功能运行良好,但我遇到的问题有两个。我不确定它们是否相关,但我认为它们是相关的。
我的应用程序可以向多个用户发送单个文本。下面是一些示例代码...
if(phoneNumbers.length > 0 && message.getText().toString().equals("") == false)
{
for(int i=0;i<phoneNumbers.length;i++)
{
sms = SmsManager.getDefault();
try
{
sms.sendTextMessage(phoneNumbers[i], null, message.getText().toString(), null, null);
sentQuantity++;
}
catch(IllegalArgumentException e)
{
}
}
}
基本上,它只是循环遍历电话号码数组,并逐个发送文本。这就是我的一个问题所在。如果我选择发送短信给三个或更多的号码,有时并不是所有的短信都能被发送出去。这种情况非常随机。
我认为这是因为在发送每条单独的消息之间存在延迟,但代码没有等待足够长的时间。我得出了这个假设,因为如果我使用eclipse步进程序并手动浏览应用程序,一切都能正常工作。
我的另一个问题是当我向web服务器发送短信状态更新时。
在短信发送后立即,该应用程序会连接到互联网,并通过http post告诉服务器已发送的短信数量。以下是我的互联网代码片段...
for(int i = 0; i < postNames.length; i++)
{
nameValuePairs.add(new BasicNameValuePair(postNames[i], postValues[i]));
}
//http post
try{
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters,timeoutConnection );
HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(webAddress);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
这一部分仅是将帖子的内容进行编译,连接到网页并发送该帖子。关键在于10秒的连接超时时间。就像我之前说的那样,发送文本后,互联网连接会立即发生。所以,如果我进入调试模式并手动逐步执行该过程,一切都很顺利。但是,如果我只在手机上运行应用程序,就会出现连接超时错误。
现在,我希望如果我可以将短信数量减少到一个单一的短信,而不管收件人数量是多少,那将是很棒的。我尝试使用逗号将电话号码分开,但那行不通。我还尝试使用分号来分隔数字(与Microsoft Outlook或Gmail让您向电子邮件添加多个收件人的方式完全相同)。但这些对我都没有起作用。有人有任何建议吗?即使有完全不同的方法也没问题。哦,我不想使用Google消息意图来发送短信,我需要使用自己的应用程序。
2135551212,,,,123
。这将呼叫该号码,等待5个暂停,然后进一步拨打123。 - Alexis Wilke