您的位置:首页 > 其它

广播接收者(BroadcastReceiver的应用)

2012-12-08 19:56 399 查看
发短息这一功能对于我们来说很容易,但是具体怎么实现的呢,现在我们可以利用BroadcastReceiver并实现输出发送者的电话号码,短信内容和发送时间对其进行类似监听效果。

首先,新建项目,相信初学者也会。而且这里不需要Activity,可以不用建Activity,但没有Activity时,它的包也隐藏了,所以可能会要重建包。



在这包里建类,如上图(让这个类继承BroadcastReceiver):这个类就是接收者

public class SMSLisener extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		Object[] pduses = (Object[]) intent.getExtras().get("pdus");// 获取短信
		for (Object pdus : pduses) {
			byte[] pdusmessage = (byte[]) pdus;
			SmsMessage sms = SmsMessage.createFromPdu(pdusmessage);//短信
			String mobile = sms.getOriginatingAddress();//电话号码
			String content = sms.getMessageBody();//短信内容
			Date date = new Date(sms.getTimestampMillis());//日期
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
					"yyyy-MM-dd HH:mm:ss");
			String sendtime = simpleDateFormat.format(date);
			System.out.println("mobile:" + mobile 
					+"\n"+ "内容:" + content +"\n"+ "发送时间:"
					+ sendtime);//输出发送短信的手机号码,内容,时间
		}

	}

}

在AndroidManifest.xml中定义接收者(注意划线部分<U>,接收者名称和接收者类中必须一致):

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.smslisener"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />

    <application android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">
        <receiver android:name=".SMSLisener">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
            </intent-filter>
        </receiver>

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


完成所有步骤需要把项目部署到一个模拟器上,用另一模拟器对其发短信,发送成功时我们在控制台就能看见如下图的情况:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: