现在的位置: 首页 > 综合 > 正文

android监听短信

2012年10月19日 ⁄ 综合 ⁄ 共 3327字 ⁄ 字号 评论关闭

android中可以通过设置写一个继承自BroadcastReceiver的Receiver来重写接收到短信之后的逻辑处理:

<receiver android:name=".filter.SmsReceiver"> 
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver> 

 

 

发送短信后的Broadcast:

1 ContentObserver

先写一个观察者:

 

代码

public class SmsObserver extends ContentObserver {        
        
private Context context;
        
private static final String[] SMS_PROJECTION = new String[] {
               
"address","person","date","type","body",
            };

        public SmsObserver(Context context,Handler handler) {
                super(handler);                
                
this.context = context;
                Log.i(
"Leo-SmsObserver""My Oberver on create");
        }
        
        
public void onChange (boolean selfChange) {
                Log.i(
"SmsObserver""sms onChange###### ");                
        }

}

 

然后在Acitivty或Service里注册这个观察者

 

getContentResolver().registerContentObserver(Uri.parse("content://sms"),
                                
truenew SmsObserver(thisnew Handler()));

 

 

2 可以自定义BroadcastReceiver来实现~

 

代码

SmsManager smsManager = SmsManager.getDefault();
        
        
// TODO Auto-generated method stub
        try
        {
          
/* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
          Intent itSend 
= new Intent(SMS_SEND_ACTIOIN);
          Intent itDeliver 
= new Intent(SMS_DELIVERED_ACTION);
          
          
/* sentIntent参数为传送后接受的广播信息PendingIntent */
          PendingIntent mSendPI 
= PendingIntent.getBroadcast
          (getApplicationContext(), 
0, itSend, 0);
          
          
/* deliveryIntent参数为送达后接受的广播信息PendingIntent */
          PendingIntent mDeliverPI 
= PendingIntent.getBroadcast
          (getApplicationContext(), 
0, itDeliver, 0);
          
          
/* 发送SMS短信,注意倒数的两个PendingIntent参数 */
          smsManager.sendTextMessage
          (strDestAddress, 
null, strMessage, mSendPI, mDeliverPI);
          
          mTextView01.setText(R.
string.str_sms_sending);
        }
        
catch(Exception e)
        {
          mTextView01.setText(e.toString());
          e.printStackTrace();
        }

代码

/* 自定义mServiceReceiver覆盖BroadcastReceiver聆听短信状态信息 */
  
public class mServiceReceiver extends BroadcastReceiver
  {
    @Override
    
public void onReceive(Context context, Intent intent)
    {
      
// TODO Auto-generated method stub
      
      
try
      {
        
/* android.content.BroadcastReceiver.getResultCode()方法 */
        
switch(getResultCode())
        {
          
case Activity.RESULT_OK:
            
/* 发送短信成功,这里写需要的代码*/
            
//mTextView01.setText(R.string.str_sms_sent_success);
            mMakeTextToast
            (
              getResources().getText
              (R.
string.str_sms_sent_success).toString(),
              
true
            );
            
break;
          
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
            
/* 发送短信失败 */
            
//mTextView01.setText(R.string.str_sms_sent_failed);
            mMakeTextToast
            (
              getResources().getText
              (R.
string.str_sms_sent_failed).toString(),
              
true
            );
            
break;
          
case SmsManager.RESULT_ERROR_RADIO_OFF:
            
break;
          
case SmsManager.RESULT_ERROR_NULL_PDU:
            
break;
        }        
      }
      
catch(Exception e)
      {
        mTextView01.setText(e.toString());
        e.getStackTrace();
      }
    }
  }

 

 

 

抱歉!评论已关闭.