利用广播读取即时短信

       当我们注册一个app时会有短信发过来,然后把短信直接读取到登录界面的账号和密码,这样用户可以直接点击登录就好。这篇博客是我在准备这个功能时参考网络上的博客写出来的小demo。希望能对大家有所帮助。

       利用广播读取即时收到的短信,将内容打印到logcat中。

      步骤:

①加上权限:(收发短信必须要有的权限)
<uses-permission android:name="android.permission.RECEIVE_SMS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_SMS" >
</uses-permission>
②注册广播:
<receiver android:name="com.Synthia.androidrecivemessage.Message_Receiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
③写广播接收器:
public class Message_Receiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        System.out
                .println("Synthia-----The BroadcastReceiver of message is starting working。。。");
        if (intent.getAction()
                .equals("android.provider.Telephony.SMS_RECEIVED")) {
            StringBuffer SMSAddress = new StringBuffer();
            StringBuffer SMSContent = new StringBuffer();
            Bundle bundle = intent.getExtras();
            if (bundle != null) {
                Object[] pdusObjects = (Object[]) bundle.get("pdus");
                SmsMessage[] messages = new SmsMessage[pdusObjects.length];
                for (int i = 0; i < pdusObjects.length; i++) {
                    messages[i] = SmsMessage
                            .createFromPdu((byte[]) pdusObjects[i]);
                }
                for (SmsMessage message : messages) {
                    SMSAddress.append(message.getDisplayOriginatingAddress());
                    SMSContent.append(message.getDisplayMessageBody());
                }

                System.out.println("The phone number of this message is::::"
                        + SMSAddress + "\n"
                        + "The detail of your message is:::" + SMSContent);
            } else {
                Toast.makeText(context, "还未收到短信,请稍等", Toast.LENGTH_SHORT)
                        .show();
            }

        }
    }
}
④在需要的界面中启动广播:
                Intent intent = new Intent();
                intent.setAction("android.provider.Telephony.SMS_RECEIVED");
                sendBroadcast(intent);

⑤在logcat中打印的如图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值