`

在程序内部注册和反注册服务-一个接受短信的例子

 
阅读更多

请注意下面程序中的黑体部分:

 

package irdc.EX06_05;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.TextView;
import android.widget.Toast;

public class EX06_05 extends Activity
{
  /*声明一个TextView,String阵在与两个文字字符串变量*/
  private TextView mTextView1;
  public String[] strEmailReciver;
  public String strEmailSubject;
  public String strEmailBody;
  /* 系统接收短信的广播ACTION常数 */
  private static final String HIPPO_SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
  private mSMSReceiver mReceiver01;
 
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   
    /*透过findViewById构造巳建立TextView对象*/
    mTextView1 = (TextView) findViewById(R.id.myTextView1);
    mTextView1.setText("等待接收短信...");
   
  }
 
  public class mSMSReceiver extends BroadcastReceiver
  {
    /*声明静态字符串,并使用android.provider.Telephony.SMS_RECEIVED作为Action为短信的依据*/
    private static final String mACTION = "android.provider.Telephony.SMS_RECEIVED";
    private String str_receive="收到短信!";
    private String strRet = "";
   
    @Override
    public void onReceive(Context context, Intent intent)
    {
      // TODO Auto-generated method stub
      Toast.makeText(context, str_receive.toString(), Toast.LENGTH_LONG).show();
      /*判断传来Intent是否为短信*/
      if (intent.getAction().equals(mACTION))
      {
        /*构造一个字符串变量sb*/
        StringBuilder sb = new StringBuilder();
        /*接收由Intent传来的数据*/
        Bundle bundle = intent.getExtras();
        /*判断Intent是有资料*/
        if (bundle != null)
        {
          /* pdus为 android内建短信参数 identifier
           * 透过bundle.get("")并传pdus的对象*/
          Object[] myOBJpdus = (Object[]) bundle.get("pdus");
         
          /*构造短信对象array,并依据收到的对象长度来建立array的己弋*/
          SmsMessage[] messages = new SmsMessage[myOBJpdus.length]; 
         
          for (int i = 0; i<myOBJpdus.length; i++)
          { 
            messages[i] = SmsMessage.createFromPdu ((byte[]) myOBJpdus[i]); 
          }
         
          strRet = "";
          /* 将送来的短信安并自定义信息在StringBuilder当中 */ 
          for (SmsMessage currentMessage : messages)
          {
            strRet = "接收到来自:"+currentMessage.getDisplayOriginatingAddress()+" 传来的短信"+currentMessage.getDisplayMessageBody();
            sb.append("接收到来自:\n"); 
            /* 发信人的电话号码 */
            sb.append(currentMessage.getDisplayOriginatingAddress()); 
            sb.append("\n------传来的短信------\n"); 
            /* 取得传来短信的BODY */ 
            sb.append(currentMessage.getDisplayMessageBody());
          } 
        }      
        /* 以Notification(Toase)显示短信内容  */
        Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
       
        /*自定义Intent来执行寄送E-mail的实现*/
        Intent mEmailIntent = new Intent(android.content.Intent.ACTION_SEND); 
        /*设定邮件格式为"plain/text"*/
        mEmailIntent.setType("plain/text");
       
        /*取得EditText01,02,03,04的值作为收件,附件,主题,内容*/
        String strEmailReciver = "jay.mingchieh@gmail.com";
        String strEmailSubject = "有几条短信!!";
       
        /*将取得的?串放丈mEmailIntent中*/
        mEmailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, strEmailReciver);
        mEmailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, strEmailSubject);
        mEmailIntent.putExtra(android.content.Intent.EXTRA_TEXT, strRet);
        context.startActivity(Intent.createChooser(mEmailIntent, getResources().getString(R.string.str_message)));
        mTextView1.setText(getResources().getString(R.string.str_message));
      }
    }
  }

  @Override
  protected void onPause()
  {
    // TODO Auto-generated method stub
    super.onPause();
    unregisterReceiver(mReceiver01);
  }
 
  @Override
  protected void onResume()
  {
    // TODO Auto-generated method stub
    IntentFilter mFilter01;
    mFilter01 = new IntentFilter(HIPPO_SMS_ACTION);
    mReceiver01 = new mSMSReceiver();
    registerReceiver(mReceiver01, mFilter01);
    super.onResume();
  }
 
}

 

 

分享到:
评论

相关推荐

    西门子PLC例程-S7发短信例子.zip

    这个名为“西门子PLC例程-S7发短信例子.zip”的压缩包包含了一个具体的示例,演示了如何使用西门子S7系列PLC发送短信。S7系列是西门子的主流PLC产品线,包括S7-200、S7-300和S7-400等,其中S7-300和S7-400常用于复杂...

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    电信设备-一种具有短信通知功能的清洗消毒器.zip

    标题提到的"电信设备-一种具有短信通知功能的清洗消毒器"就是一个典型的例子,它将电信技术融入了清洗消毒设备,为用户提供了一种全新的智能体验。接下来,我们将深入探讨这个话题,解析其背后的科技知识点。 首先...

    MAS接口DotNet开发手册与例子程序

    MAS接口(Mobile Application Server,移动应用服务器接口)是用于移动通信系统中的一个关键组件,它为开发者提供了与移动网络交互的能力,尤其是处理短信服务(SMS)和其他增值业务。通过MAS接口,开发者可以创建...

    实用源程序集锦]51study实例-C51闹铃程序.rar_51 串口_51短信_闹铃_C51

    总的来说,这份压缩包资料提供了51单片机的基础知识,特别是串口通信和短信功能的实现,以及一个具体的51单片机闹钟程序实例。对于初学者或希望扩展51单片机应用能力的工程师来说,这是一个宝贵的参考资料。

    20070411am--实例开发Windows Mobile进阶:短信开发大全

    - **SmsOpen**: 这个函数用于创建一个用于短信操作的句柄。函数原型如下: ```cpp HRESULT SmsOpen( const LPCTSTR ptsMessageProtocol, const DWORD dwMessageModes, SMS_HANDLE* const psmshHandle, HANDLE...

    短信开发各语言开发例子

    在IT行业中,短信服务(SMS,Short Message Service)的开发是一项常见的需求,特别是在移动应用、企业内部通信或者营销活动中。本资源提供了多个编程语言的短信开发示例,包括C#、C++Builder、Delphi、PowerBuilder...

    程序看门狗-程序监控

    1. **定期检查**:看门狗程序会设定一个固定的间隔时间(在这个例子中是每3秒钟)来检查目标进程是否活跃。这个检查通常包括验证进程ID、检查进程的状态(如运行、暂停、终止)以及进程是否在执行预期的任务。 2. *...

    定时晚安短信App,方便学习使用

    “晚安短信”标签明确了App的主要用途,而“简单app例子”则表明这是一个教学或示例性质的项目,适合初学者模仿和学习。通过这样的例子,开发者可以学习如何处理时间触发的事件(如定时任务)、如何与操作系统进行...

    Java短信收发;SMSLIB使用;java接收短信;java发送短信

    Java短信收发技术是软件开发中的一个重要组成部分,特别是在企业级应用和移动通信解决方案中。SMSLIB是一个用Java编写的开源库,它提供了短信发送和接收的功能,为开发者提供了方便的API来实现短信服务。本篇将详细...

    C#400例子.pdf

    - **实例说明**:许多应用程序会在任务栏的系统托盘区域放置一个小图标,点击该图标会弹出一个菜单,提供应用程序的主要功能选项。 - **技术要点**: - 注册系统托盘图标。 - 设计简洁易用的菜单布局。 **实例005...

    android手机短信的收发

    下面是一个简单的发送短信的例子: ```java // 获取SmsManager的默认实例 SmsManager smsManager = SmsManager.getDefault(); // 构建要发送的短信内容 String message = "Hello, this is a test message."; // ...

    sms.rar_java sms_java 短信_sms_sms java

    总结一下,这个“sms.rar”包含了一个用于Java平台的短信服务开发包,提供短信发送和接收的API,附带示例代码和详细的文档,还有开发者网站的支持。开发者可以通过这个包轻松地在自己的Java应用中集成短信功能,无论...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该...

    intent跳转到短信和电话界面

    在Android应用开发中,Intent是一种强大的机制,用于在不同的组件之间传递消息,它扮演着应用程序内部或不同应用程序之间通信的重要角色。"intent跳转到短信和电话界面"这个主题主要涉及如何利用Intent来启动系统...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序 Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典型C/S结构, 当用户发送第一次请求的时候,验证用户登录,创建一个该...

    vc++ 应用源码包_1

    压缩包内有两个源码包,一个是注册机源程序,另一个是解密机的源程序,一套完整的参考实例。 VC+MapX源码含GPS跟踪演示 VC3D 利用VC编程在界面上实现3D文字 在MFC应用程序中浏览PDF、Word文档文件 vcdialog 自...

    java源码包3

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    js代码-中山医院发送短信

    在这个场景下,“js代码-中山医院发送短信”可能指的是一个用JavaScript编写的程序,用于在中山医院的在线系统中发送短信通知或验证。这个程序可能是为了提高医疗服务的效率,比如向患者发送预约确认、检查结果或者...

    android学习教程--广播机制

    在这个例子中,我们创建了一个简单的Activity,包含两个按钮,一个用于动态注册BroadcastReceiver,另一个用于注销。BroadcastReceiver监听SMS_RECEIVED事件,当收到新短信时会执行相应的操作。 ```java public...

Global site tag (gtag.js) - Google Analytics