2013-04-24 17 views
0

有没有人有过这个问题之前,或有人可以解释我发生了什么?Android sentIntent的smsManager.sendTextMessage使UI刷新

代码说明: 以下代码从我的对象ContactFromXML中获取一些信息,并在需要的地方发送一些文本消息。

代码:

 PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0); 
     for (int i=0; i<contactsCount;i++){ 
      while(contactsIt.hasNext()){ 
       ContactFromXML contact = contactsIt.next(); 
       if (mTeam.equals(contact.mTeam)){ 
        smsMessage = String.format(getResources().getString(R.string.mess_sms_message), contact.mVoornaam, mTimeOfArrival); 
        smsManager.sendTextMessage(contact.mTel, null, smsMessage, pi , null); 
       } 
      } 
     } 

问题: 对于每一个我的代码发送的TextMessage,它像是刷新UI。首先,我想这将是因为从我的UI线程发送的消息,所以我把它放到一个AsyncTask中。但是这并没有解决任何问题。经过一些测试后,我发现这是因为de SentItent'pi'。如果我不使用它,它没有任何问题。

问题: 任何人都可以解释这一点吗?我真的希望使用该功能来查看是否实际发送了文本消息,而不会让用户注意到UI刷新。

+0

你想用'PendingIntent'做什么? – 2013-04-24 10:30:12

+0

PendingIntent在sendTextMessage中设置为sentIntent。后来在我的代码中,我将把一个监听器放在它上面,以确保textmessage实际上被发送。 – 2013-04-24 11:14:15

回答

0

Android Developer SitesentIntent这是一个PendingIntent发送when the message is successfully sent, or failed.这里你设置的活动在PendingIntent,所以每当你的消息是sentfailed发送,您PendinfIntent被激活,并刷新您的活动。

+0

感谢您的信息。任何人都有一个想法如何克服刷新或绕过它仍然使用sentIntent? – 2013-04-24 13:30:47

+0

使用'PendingIntent pi = PendingIntent.getBroadcast(this,0,sent,0)'where'sent' is'Intent sent = new Intent(“SMS_SENT”)' – 2013-04-24 13:51:36

+0

并使用'BroadcastReceiver'接收广播 – 2013-04-24 13:52:02