OK. Я отправляю текстовые сообщения через мое приложение. После отправки текстового сообщения оно отправляет обновление статуса на сервер. Эта часть работает хорошо, но проблема, с которой я сталкиваюсь, двояка. Я не уверен, связаны ли они, но я предполагаю, что они связаны.
Мое приложение имеет возможность отправлять один текст нескольким пользователям. Вот пример кода ...
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)
{
}
}
}
По сути, он просто просматривает массив телефонных номеров и отправляет текст по одному за раз. Вот где часть моей проблемы лежит. Если я выбираю 3 или более цифр для отправки текста, иногда не все тексты действительно отправляются. Это происходит очень случайно.
Я предполагаю, что это происходит из-за задержки между отправкой каждого отдельного сообщения, но код не ждет достаточно долго. Я пришел к этому предположению, потому что, если я захожу в программу с помощью eclipse и вручную прохожу приложение, все всегда работает просто отлично.
Другая проблема - отправка обновления статуса текстового сообщения на веб-сервер.
Сразу после отправки текстовых сообщений приложение подключается к Интернету и сообщает серверу через HTTP-сообщение количество отправленных текстов. Вот мой фрагмент интернет-кода ...
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 Messaging для отправки сообщений, мне нужно использовать собственное приложение.