Android 部分接收器处理 BroadCastReceiver

public class DisposeBCReceiver extends BroadcastReceiver
{
   
    public static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
   
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Bundle bundle = intent.getExtras();
        StringBuffer sb = new StringBuffer();
        //短信接收
        if (intent.getAction().equals(SMS_ACTION))
        {
            if (null != bundle)
            {
                Set<String> keys = bundle.keySet();
                for (String key : keys)
                {
                    Log.v("---------------", key);
                }
            }
           
            /*
             * 获得收到的短信数据
             */
            Object[] objArr = (Object[]) bundle.get("pdus");
           
            /*
             * 定义封装短信内容SMSMessage对象数组
             */
            SmsMessage[] message = new SmsMessage[objArr.length];
           
            for (int i = 0; i < objArr.length; i++)
            {
                message[i] = SmsMessage.createFromPdu((byte[]) objArr[i]);
                sb.append("手机号码是:");
                sb.append(message[i].getOriginatingAddress());
                sb.append("\n");
                sb.append("短信内容是:");
                sb.append(message[i].getDisplayMessageBody());
            }
           
            Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG);
        }
        //屏幕状态接收
        else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF))
        {
            sb.append("屏幕休眠状态...");
            Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG);
        }
        else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON))
        {
            sb.append("屏幕唤醒状态...");
            Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG);
        }
        //电池用量接收
        else if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED))
        {
            sb.append("电池用量:");
            int level = intent.getIntExtra("level", 0);
            int scale = intent.getIntExtra("scale", 100);
            sb.append((level * 100)/scale);
            sb.append("%");
            Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG);
        }
    }
}

程序处理:
receiver = new DisposeBCReceiver();
        IntentFilter filter1 = new IntentFilter("android.provider.telephony.SMS_RECEIVED");
        registerReceiver(receiver, filter1);
        IntentFilter filter4 = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(receiver, filter4);
        Toast.makeText(basicContext, "短信消息接收器注册成功!", Toast.LENGTH_LONG);

AndroidManifest.xml中权限处理
<!-- 短信接收权限添加 -->
<uses-permission android:name="android.permission.RECEIVE_SMS" />

猜你喜欢

转载自mickey-hou.iteye.com/blog/1685196