Android 发送短信小程序

该代码为其添加了广播接收者的监听。详细代码如下

java代码:
  1. package eoe.demo;


  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import android.app.Activity;
  5. import android.app.PendingIntent;
  6. import android.content.BroadcastReceiver;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.content.IntentFilter;
  10. import android.os.Bundle;
  11. import android.telephony.SmsManager;
  12. import android.util.Log;
  13. import android.view.View;
  14. import android.widget.Button;
  15. import android.widget.EditText;
  16. import android.widget.Toast;


  17. public class Send extends Activity {
  18. private String message;
  19. private String number ;
  20. private EditText editText;
  21. private EditText editText2;


  22. @Override
  23. public void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. editText = (EditText) this.findViewById(R.id.number);
  27. editText2 = (EditText)this.findViewById(R.id.message);
  28. Button button = (Button)this.findViewById(R.id.button);
  29. button.setOnClickListener(new View.OnClickListener() {


  30. public void onClick(View v) {
  31. number = editText.getText().toString();
  32. message = editText2.getText().toString();
  33. // 在LogCat中可以查看到number和message的相关信息
  34. Log.i("number", number);
  35. Log.i("message", message);
  36. /*获取系统默认的信息管理器,一定要注意的是SmsManager是android.telephony.SmsManager;这和
  37. *我们使用的版本有关,在 Android 2.0 以前 应该使用 android.telephony.gsm.SmsManager
  38. *Android 2.0 之后的版本应该用 android.telephony.SmsManager。
  39. */
  40. SmsManager smsManager = SmsManager.getDefault();
  41. /*PendingIntent.getBroadcast返回一个用于广播的PendingIntent对象,类似于调用Content.sendBroadcast();
  42. */
  43. PendingIntent paIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_SENT2"), 0);
  44. PendingIntent deliveryIntent = PendingIntent.getBroadcast(Send.this, 0, new Intent("SMS_DELIVERED2"), 0);


  45. // 注册一个BroadcastReceiver,当有匹配它的IntentFilter的Intent出现时,该方法会被触发
  46. registerReceiver(new BroadcastReceiver(){


  47. @Override
  48. public void onReceive(Context context, Intent intent) {
  49. int resultCode = getResultCode();
  50. switch(resultCode){
  51. case Activity.RESULT_OK:
  52. Toast.makeText(getBaseContext(), "信息发送成功了哦、", Toast.LENGTH_LONG).show();
  53. break;
  54. default:
  55. Toast.makeText(getBaseContext(), "信息发送失败了哦、", Toast.LENGTH_LONG).show();
  56. }
  57. }
  58. }, new IntentFilter("SMS_SENT2"));
  59. registerReceiver(new BroadcastReceiver() {


  60. @Override
  61. public void onReceive(Context context, Intent intent) {
  62. Toast.makeText(getBaseContext(), "deliveryIntent", Toast.LENGTH_LONG).show();
  63. Log.i("短信接收人是否查看信息", "看了");
  64. }
  65. }, new IntentFilter("SMS_DELIVERED2"));
  66. // smsManager.divideMessage有些时候短信如果超过了字数,我们就需要这个方法来帮我们拆分短信内容。
  67. ArrayList<String> smses = smsManager.divideMessage(message);
  68. Iterator<String> iterator = smses.iterator();
  69. while(iterator.hasNext()){
  70. String temp = iterator.next();
  71. //发送短信
  72. smsManager.sendTextMessage(number, null, temp, paIntent, deliveryIntent);
  73. }
  74. // 弹出一个浮动框显示提示内容,Toast.LENGTH_LONG代表浮动框显示时间的长短
  75. Toast.makeText(Send.this, "短信发送完成", Toast.LENGTH_LONG).show();
  76. }
  77. });
  78. }
  79. }

registerReceiver()用于注册广播接受者。该方法在Content中这样定义的。
        public abstract Intent registerReceiver(BroadcastReceiver receiver,IntentFilter filter);系统如果查询到满足filter的广播,便会教给receiver,让其处理。一般都是在其onReceive()方法中处理。

       如果不是在代码中主动通过registerReceiver()进行注册,那么就要从AndroidManifest.xml进行配置,代码如下
       <receiver android:name="类名">
       <intent-filter>
       <action android:name="接收者中Intent参数的action属性" />
       </intent-filter>
       </receiver>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值