首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android短信效能源码方法

2012-07-15 
Android短信功能源码方法Android系统提供了Intent方法,来实现短信接口的调用。使用startActivity()启动了了

Android短信功能源码方法

    Android系统提供了Intent方法,来实现短信接口的调用。使用startActivity()启动了了短信功能后,短信界面就会呈现在用户面前。开发其他应用程序用此方法,就显得不太合理。在这里总结使用源码来完成短信发送任务,很多代码都来自网上,在这里,我仅做了点封装。

由于在MSM短信是在后台发送的,取名为sendTextMsgBack()。

void sendTextMsgBack(Context _context,  //函数调用者
            String _strDestAddress,   //收件人号码
            String _strMessage){   //短信内容       Intent sentIntent=new Intent(SENT_SMS_ACTION);
      PendingIntent sentPI=PendingIntent.getBroadcast(_context, 0, sentIntent, 0);

      //仅在当目标用户接收到你的SMS消息后触发
      Intent deliverIntent=new Intent(DELIVERED_SMS_ACTION);
      PendingIntent deliverPI=PendingIntent.getBroadcast(_context, 0, deliverIntent, 0);       SmsManager sms = SmsManager.getDefault();       if (_strMessage.length() > 70) {
          ArrayList<String> msgs = sms.divideMessage(_strMessage);
          for (String msg : msgs) {
             sms.sendTextMessage(_strDestAddress, null, msg, sentPI, deliverPI);       } else {
              sms.sendTextMessage(_strDestAddress, null, _strMessage, sentPI, deliverPI);
      }

为了监视短信的发送状态,另外还需要两个广播接收器。

    final String SENT_SMS_ACTION = "SENT_SMS_ACTION";
    final String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";


    private class SMS_BroadcastReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            //System.out.println("SMS_BroadcastReceiver");
            switch (getResultCode()) {
            case Activity.RESULT_OK:
                Toast.makeText(getBaseContext(), "SMS sent success actions",
                          Toast.LENGTH_SHORT).show();
                System.out.println("SMS sent success actions");
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                Toast.makeText(getBaseContext(), "SMS generic failure actions",
                          Toast.LENGTH_SHORT).show();
                System.out.println("SMS generic failure actions");
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                Toast.makeText(getBaseContext(),
                          "SMS radio off failure actions", Toast.LENGTH_SHORT).show();
                System.out.println("SMS radio off failure actions");
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                Toast.makeText(getBaseContext(),
                          "SMS null PDU failure actions", Toast.LENGTH_SHORT).show();
                System.out.println("SMS null PDU failure actions");
                break;
            }

        }   
    private class Dele_BroadcastReceiver extends BroadcastReceiver{
        @Override
         public void onReceive(Context _context,Intent _intent){
             Toast.makeText(getBaseContext(),
                 "SMS delivered actions",
                 Toast.LENGTH_SHORT).show();
              System.out.println("SMS delivered actions");     }

在Activity对象里,对这两个广播接收器进行注册。

另外,在提供个对Intent方法发送短信的函数封装:

    void sendTextMsgFont(Context _context,   //函数调用者
            String _strDestAddress,   //收件人号码
            String _strMessage){   //短信内容
 

        Uri uri = Uri.parse( "smsto:" + _strDestAddress);
        Intent it = new Intent(Intent.ACTION_SENDTO, uri);
        it.putExtra("sms_body", _strMessage);
        _context.startActivity(it);
    }

-
  

热点排行