发送短信代码

public class SendActivity extends Activity
{
/* 建立两个mServiceReceiver对象,作为类成员变量 */
private mServiceReceiver mReceiver01, mReceiver02;
private Button mButton1;
private TextView mTextView01;
private EditText mEditText1, mEditText2;

/* 自定义ACTION常数,作为广播的Intent Filter识别常数 */
private static String SMS_SEND_ACTIOIN = “SMS_SEND_ACTIOIN”;
private static String SMS_DELIVERED_ACTION = “SMS_DELIVERED_ACTION”;

/* Called when the activity is first created. /
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

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

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

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

//mEditText1.setText("+886935123456");
/* 设定预设为5556表示第又个模拟器的Port */
mEditText1.setText("5556");
mEditText2.setText("Hello DavidLanz!");

/* 发送SMS短信按钮事件处理 */
mButton1.setOnClickListener(new Button.OnClickListener()
{
  @Override
  public void onClick(View arg0)
  {
    // TODO Auto-generated method stub

    /* 欲发送的电话号码 */
    String strDestAddress = mEditText1.getText().toString();

    /* 欲发送的短信内容 */
    String strMessage = mEditText2.getText().toString();

    /* 建立SmsManager对象 */
    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);

     if(strMessage.length()>70){
       ArrayList<String> message_list=smsManager.divideMessage(strMessage);
       for(String message:message_list){
         smsManager.sendTextMessage(strDestAddress, null, message, mSendPI, mDeliverPI); 
       }

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

      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

  //mTextView01.setText(intent.getAction().toString());
  if (intent.getAction().equals(SMS_SEND_ACTIOIN))
  {
    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();
    }
  }
  else if(intent.getAction().equals(SMS_DELIVERED_ACTION))
  {
    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_rec_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_rec_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();
    }
  }      
}

}

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

@Override
protected void onResume()
{
// TODO Auto-generated method stub

/* 自定义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();

}

@Override
protected void onPause()
{
// TODO Auto-generated method stub

/* 取消注册自定义Receiver */
unregisterReceiver(mReceiver01);
unregisterReceiver(mReceiver02);

super.onPause();

}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AT指令收发短信,需要短信猫的支持 /// <summary> /// 针对国内短信编码(USC2) /// </summary> public class USC2 { public readonly static int MAX_CHAR_COUNT = 70;//最长可发送汉字个数 /**/ /// <summary> /// 奇偶互换并补F /// </summary> /// <param name="value"></param> /// <returns></returns> private static string ParityChange(string value) { string result = string.Empty; int length = value.Length; for (int i = 1; i < length; i += 2)//奇偶互换 { result += value[i]; result += value[i - 1]; } if (!(length % 2 == 0))//不是偶数则加上F,与最后一位互换 { result += 'F'; result += value[length - 1]; } return result; } /**/ /// <summary> /// 短信内容编码 /// </summary> /// <param name="value"></param> /// <returns></returns> /// <remarks> /// 采用Big-Endian 字节顺序的 Unicode 格式编码,将高低位互换 /// 将转换后的短信内容存进字节数组 /// 去掉在进行Unicode格式编码中,两个字节中的"-",例如:00-21,变成0021 /// 将整条短信内容的长度除2,保留两位16进制数 /// </remarks> public static string Encoding(string value) { Encoding encoding = System.Text.Encoding.BigEndianUnicode; string result = string.Empty; byte[] bytes = encoding.GetBytes(value); for (int i = 0; i < bytes.Length; i++) { result += BitConverter.ToString(bytes, i, 1); } return result; } public static string EncodeingAddLength(string value) { string result = Encoding(value); return String.Format("{0:X2}{1}", result.Length / 2, result); } /**/ /// <summary> /// 短信中心号码编码 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string DecodingCenter(string phone) { string result = string.Empty; result = ParityChange(phone); result = String.Format("91{0}", result);//加上91 result = String.Format("{0:X2}{1}", result.Length / 2, result); return result; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值