在Android中以编程方式发送短信

好。我正在通过我的应用发送短信。发送文本消息后,它将状态更新发送到服务器。这部分工作正常,但是我遇到的问题是双重的。我不确定它们是否相关,但我认为它们是相关的。


我的应用程序可以将单个文本发送给多个用户。这是代码示例...


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进入程序并手动浏览应用程序,那么一切都会正常进行。


我的另一个问题是当我将短信状态更新发送到Web服务器时。


发送短信后,该应用程序立即连接到互联网,并通过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意图发送消息,我需要使用自己的应用程序。


暮色呼如
浏览 389回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android