`

BroadcastReceiver监听短信发送的状态

 
阅读更多

添加权限

 

<uses-permission
		android:name="android.permission.SEND_SMS"></uses-permission>
	<uses-permission
		android:name="android.permission.RECEIVE_SMS"></uses-permission>
 

public class SmsSendState extends Activity {

	private mServiceReceiver mReceiver01, mReceiver02;
	private Button mButton1;
	private TextView mTextView01;
	private EditText mEditText1, mEditText2;

	private static String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
	private static String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sms_send_state);

		mTextView01 = (TextView) findViewById(R.id.myTextView1);

		/* 电话号码 */
		mEditText1 = (EditText) findViewById(R.id.myEditText1);

		/* 短信内容 */
		mEditText2 = (EditText) findViewById(R.id.myEditText2);
		mButton1 = (Button) findViewById(R.id.myButton1);

		/* 发送SMS短信按钮事件处理 */
		mButton1.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View arg0) {
				/* 欲发送的电话号码 */
				String strDestAddress = mEditText1.getText().toString();
				/* 欲发送的短信内容 */
				String strMessage = mEditText2.getText().toString();
				/* 建立SmsManager对象 */
				SmsManager smsManager = SmsManager.getDefault();
				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);
				} catch (Exception e) {
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
			}
		});
	}

	/* 自定义mServiceReceiver重写BroadcastReceiver监听短信状态信息 */
	public class mServiceReceiver extends BroadcastReceiver {
		public void onReceive(Context context, Intent intent) {
			if (intent.getAction().equals(SMS_SEND_ACTIOIN)) {
				try {
					switch (getResultCode()) {
					case Activity.RESULT_OK:
						/* 发送短信成功 */
						mMakeTextToast("发送短信成功", true);
						break;
					case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
						/* 发送短信失败 */
						mMakeTextToast("发送短信失败", true);
						break;
					case SmsManager.RESULT_ERROR_RADIO_OFF:
						break;
					case SmsManager.RESULT_ERROR_NULL_PDU:
						break;
					}
				} catch (Exception e) {
					e.getStackTrace();
				}
			} else if (intent.getAction().equals(SMS_DELIVERED_ACTION)) {
				try {
					switch (getResultCode()) {
					case Activity.RESULT_OK:
						/* 短信 */
						mMakeTextToast("发送短信成功", true);
						break;
					case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
						/* 短信未送达 */
						mMakeTextToast("发送短信失败", true);
						break;
					case SmsManager.RESULT_ERROR_RADIO_OFF:
						break;
					case SmsManager.RESULT_ERROR_NULL_PDU:
						break;
					}
				} catch (Exception e) {
					e.getStackTrace();
				}
			}
		}
	}

	public void mMakeTextToast(String str, boolean isLong) {
		if (isLong == true) {
			Toast.makeText(SmsSendState.this, str, Toast.LENGTH_LONG).show();
		} else {
			Toast.makeText(SmsSendState.this, str, Toast.LENGTH_SHORT).show();
		}
	}

	protected void onResume() {

		/* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */
		IntentFilter mFilter01;
		mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
		mReceiver01 = new mServiceReceiver();
		registerReceiver(mReceiver01, mFilter01);

		/* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */
		mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
		mReceiver02 = new mServiceReceiver();
		registerReceiver(mReceiver02, mFilter01);

		super.onResume();
	}

	protected void onPause() {
		/* 取消注册自定义Receiver */
		unregisterReceiver(mReceiver01);
		unregisterReceiver(mReceiver02);
		super.onPause();
	}

}
 


 

 

  • 大小: 19.7 KB
分享到:
评论

相关推荐

    Android 实现发短信 监听短信发送状态

    在Android平台上,开发人员可以利用系统的短信服务API来实现发送短信以及监听短信发送的状态。这一功能对于构建一些需要确认信息传递的应用,如验证码发送、通知提醒等,是至关重要的。以下将详细介绍如何在Android...

    最新andriod发送中文短信方法

    // 注册BroadcastReceiver监听短信发送状态 IntentFilter sendFilter = new IntentFilter("SENT_SMS_ACTION"); mContext.registerReceiver(sendReceive, sendFilter); // 获取SmsManager实例 SmsManager ...

    Android自动发送短信源码

    可以注册BroadcastReceiver监听短信发送状态。通过`android.provider.Telephony.SMS_SENT`和`android.provider.Telephony.SMS_DELIVER`这两个广播动作,获取短信发送和接收的状态。 10. **考虑用户隐私和政策**: ...

    基于Android平台的天气预报短信服务系统课程设计.doc

    实现BroadcastReceiver监听短信发送状态,确保短信成功发送,并处理可能出现的错误。 3.4 后台服务 创建Background Service,用于执行定时任务,如天气预报的获取和短信发送,即使用户关闭应用也能持续运行。 ...

    Android review 发短信

    此外,可以使用BroadcastReceiver监听短信发送状态,以便在成功或失败时通知用户。例如: ```java IntentFilter intentFilter = new IntentFilter(telephony.SMS_SENT); BroadcastReceiver smsSentReceiver = new ...

    【Android】短信发送

    2. **创建BroadcastReceiver**:为了监听短信发送的状态,需要创建一个BroadcastReceiver。这个接收器会在短信发送成功、失败或者被用户取消时接收到相应的广播。 ```java public class SmsSendReceiver extends ...

    监控android短信发送状态

    在Android平台上,对短信发送状态进行监控是一项常见的需求,例如为了跟踪消息是否成功发送、接收确认或者实现自动化操作。在Android系统中,我们可以通过监听`BroadcastReceiver`来捕获短信的相关事件。本教程将...

    Android-判断发送短信后的状态/发送成功Or发送失败

    2. 创建一个 PendingIntent,用于接收短信发送状态的回调: ```java Intent intent = new Intent("com.example.SMS_SENT"); PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, PendingIntent....

    android拨号器&短信发送

    3. 广播接收器:通过创建BroadcastReceiver监听短信发送和接收事件。注册广播接收器时,需要指定`android.provider.Telephony.SMS_SENT`和`android.provider.Telephony.SMS_DELIVERED`行动。 4. 短信权限管理:自...

    简单的安卓短信发送程序

    同时,可能还需要注册一个BroadcastReceiver来监听短信发送的结果,以便向用户反馈发送状态。 4. **SmsManager API**: Android提供了`SmsManager`类来处理短信的发送。在Activity中,我们可以通过`SmsManager.get...

    android 简单的短信发送

    3. **监听发送状态**:为了获取短信发送的结果,可以创建一个BroadcastReceiver并重写`onReceive()`方法,通过`pdus`参数获取短信的状态报告。 ```java private class SmsSendReceiver extends BroadcastReceiver {...

    短信发送demo

    其中,`sentPI`和`deliveryPI`是PendingIntent对象,用于监听短信发送和送达的状态。 4. **BroadcastReceiver**:为了跟踪短信发送的状态(如成功、失败或被阻止),通常会创建一个BroadcastReceiver来监听`SMS_...

    android短信发送demo

    此方法会异步执行,所以通常需要注册一个`BroadcastReceiver`来监听短信发送状态。例如: ```java SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message...

    Android短信发送程序

    5. **BroadcastReceiver**: 虽然不是必需的,但为了提供更好的用户体验,我们可以创建一个BroadcastReceiver来监听短信发送的状态。当短信发送成功或失败时,系统会发送一个广播,我们的BroadcastReceiver可以捕获这...

    安卓短信彩信相关相关-BroadcastReceiver最基础之短信收发应用.rar

    4. 系统可能会有多个BroadcastReceiver监听同一个广播,所以有可能接收到多次回调,需要处理好这种情况。 5. 对于短信发送,考虑到可能的失败情况,应适当地处理SmsManager的返回值和异常。 这个压缩包中的示例代码...

    Android 获取系统联系人并发送短信demo

    5. **处理发送状态**:可以通过BroadcastReceiver监听短信的发送状态,如成功、失败或部分成功。 在实际应用中,这两个功能都需要考虑到用户体验,比如处理用户权限拒绝的情况,显示加载进度,以及错误处理等。同时...

    HappyNewYear:一个用于发送新年快乐短信的安卓应用程序

    5. **BroadcastReceiver**: 为了实现短信发送的反馈,应用可能注册了一个BroadcastReceiver监听短信发送状态。当短信发送成功或失败时,BroadcastReceiver会接收到系统广播并作出相应处理。 6. **Multithreading**:...

    Android短信发送功能实现技巧分享

    在这里,我们创建了两个`PendingIntent`,分别用于监听短信发送成功和送达状态,这可以让你跟踪短信的状态。 为了确保用户授权,从Android 6.0(API级别23)开始,你需要在运行时请求`SEND_SMS`权限。在`...

    sendfreesms:Android Project,可帮助您提供使用Android手机发送免费短信的服务

    6. **BroadcastReceiver**:可能使用BroadcastReceiver监听短信发送状态或系统事件,比如短信发送成功或失败的通知。 7. **网络请求**:项目可能使用HttpURLConnection或第三方库如OkHttp、Retrofit来处理网络请求...

    手机短信发送和接收 学习

    手机短信发送和接收是移动通信领域中的基本功能,它允许用户通过手机设备进行文本消息的交互。短信服务(Short Message Service, SMS)自20世纪90年代以来已经成为全球最广泛使用的通信方式之一,尤其在个人和商业...

Global site tag (gtag.js) - Google Analytics