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

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

发送短信后的Broadcast:

1 ContentObserver

先写一个观察者:

代码 public class SmsObserverextendsContentObserver{
private Contextcontext;
private static finalString[]SMS_PROJECTION = new String[]{
" address " , " person " , " date " , " type " , " body " ,
};

public SmsObserver(Contextcontext,Handlerhandler){
super(handler);
this .context = context;
Log.i(
" Leo-SmsObserver " , " MyOberveroncreate " );
}

public void onChange(booleanselfChange){
Log.i(
" SmsObserver " , " smsonChange###### " );
}

}

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

getContentResolver().registerContentObserver(Uri.parse( " content://sms " ),
true , new SmsObserver( this , new Handler()));

2 可以自定义BroadcastReceiver来实现~

代码 SmsManagersmsManager = SmsManager.getDefault();

// TODOAuto-generatedmethodstub
try
{
/* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
IntentitSend
= new Intent(SMS_SEND_ACTIOIN);
IntentitDeliver
= new Intent(SMS_DELIVERED_ACTION);

/* sentIntent参数为传送后接受的广播信息PendingIntent */
PendingIntentmSendPI
= PendingIntent.getBroadcast
(getApplicationContext(),
0 ,itSend, 0 );

/* deliveryIntent参数为送达后接受的广播信息PendingIntent */
PendingIntentmDeliverPI
= PendingIntent.getBroadcast
(getApplicationContext(),
0 ,itDeliver, 0 );

/* 发送SMS短信,注意倒数的两个PendingIntent参数 */
smsManager.sendTextMessage
(strDestAddress,
null ,strMessage,mSendPI,mDeliverPI);

mTextView01.setText(R.
string .str_sms_sending);
}
catch (Exceptione)
{
mTextView01.setText(e.toString());
e.printStackTrace();
} 代码 /* 自定义mServiceReceiver覆盖BroadcastReceiver聆听短信状态信息 */
public class mServiceReceiverextendsBroadcastReceiver
{
@Override
public void onReceive(Contextcontext,Intentintent)
{
// TODOAuto-generatedmethodstub

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 (Exceptione)
{
mTextView01.setText(e.toString());
e.getStackTrace();
}
}
}

更多相关文章

  1. Android 实例子源代码文件下载地址380个合集
  2. 安卓布局属性代码中文注解
  3. Android 4.2启动代码分析(一)
  4. Android JNI简单实例(android 调用C/C++代码)
  5. Android 近百个项目的源代码,覆盖Android开发的每个领域
  6. Android 白板代码实现
  7. AndroidMenifest.xml(Android清单文件)内部代码分析

随机推荐

  1. Android(安卓)标签 (FlexboxLayout实现标
  2. Android(安卓)创建文件电脑端不显示
  3. Android(安卓)自定义ProgressDialog
  4. android 1.5~2.2源码下载
  5. Android(安卓)USB转 串口
  6. rk3288 7.1去掉桌面搜索框
  7. Android(安卓)通过 IMSI 判断手机运营商
  8. android ANR 案例分析
  9. android 4.0 屏蔽home键实现
  10. android jbox2d学习笔记一 滑轮关节