Broadcast广播接收器
来源:互联网 发布:逻辑回归的数据集 编辑:程序博客网 时间:2024/04/27 19:24
定义广播接收器步骤
1、建立自定义类继承BroadcastReceiver实现onReceive方法
2、在清单文件中注册,及相关权限
1、IP拨号器
public class IPCallBroadCast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String ip = context.getSharedPreferences("config", context.MODE_PRIVATE).getString("ip", ""); //获取拨出的电话号码 String data = getResultData(); //设置ip前缀 if(ip==""||ip==null) ip="021"; data = ip + data; setResultData(data); }}
在MainActivity中设置ip号码
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void click(View view) { EditText ip=(EditText) findViewById(R.id.et_ip_number); String num=ip.getText().toString().trim(); getSharedPreferences("config", MODE_PRIVATE).edit().putString("ip", num).commit(); if(TextUtils.isEmpty(num)){ Toast.makeText(this, "默认设置ip线路021...", 1).show(); }else{ Toast.makeText(this, "设置完毕ip线路"+num+"...", 1).show(); } finish(); }}
在清单文件中配置
<!-- 注册 --> <receiver android:name="com.qishui.broadcast.IPCallBroadCast" > <intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver>
相关权限
<!-- 接收电话去向 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
2、截获短信
新建SmsReceivier
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 拿到短信的信息 // 短信内容封装在intent中 Bundle bundle = intent.getExtras(); // 以pdus为键,取出一个object数组,数组中的每一个元素,都是一条短信 Object[] objects = (Object[]) bundle.get("pdus"); // 拿到广播中的所有短信 for (Object object : objects) { // 通过pdu来构造短信 SmsMessage sms = SmsMessage.createFromPdu((byte[]) object); if (sms.getOriginatingAddress().equals("138438")) { // 阻止其他广播接收者收到这条广播 //abortBroadcast(); SmsManager.getDefault().sendTextMessage(sms.getOriginatingAddress(), null, "你是个好人", null, null); } System.out.println(sms.getMessageBody());} }}
清单文件中配置
<!-- sms --> <receiver android:name="com.qishui.broadcast.SmsReceiver" > <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
短信权限
<!-- 收短信--> <uses-permission android:name="android.permission.READ_SMS" /> <!-- 发短信 --> <uses-permission android:name="android.permission.SEND_SMS" />
3、SD卡变化
public class SDReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //判断收到的到底是什么广播 String action = intent.getAction(); if("android.intent.action.MEDIA_MOUNTED".equals(action)){ Toast.makeText(context, "SD卡可用", 0).show(); System.out.println("SD卡可用"); } else if("android.intent.action.MEDIA_REMOVED".equals(action)){ Toast.makeText(context, "SD卡拔出", 0).show(); System.out.println("SD卡拔出"); } else if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){ Toast.makeText(context, "SD卡不可用", 0).show(); System.out.println("SD卡不可用"); }}}
<!-- Sd --> <receiver android:name="com.qishui.broadcast.SDReceiver" > <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <action android:name="android.intent.action.MEDIA_REMOVED" /> <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> <data android:scheme="file" /> </intent-filter> </receiver>
4、开机广播
public class BootReceivier extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("开机了" + getTime()); Toast.makeText(context, "开机了" +getTime(), 1).show(); } private String getTime() { long currentTimeMillis = System.currentTimeMillis(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String time = format.format(new Date(currentTimeMillis)); return time; }}
<receiver android:name="com.example.boast.BootReceivier"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
<!-- 开机权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
5、app应用,安装,更新,卸载
public class AppReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String action = intent.getAction(); String data = intent.getDataString(); if ("android.intent.action.PACKAGE_ADDED".equals(action)) { System.out.println(data + "应用被安装..."); Toast.makeText(context, data + "应用被安装...", 1).show(); } else if ("android.intent.action.PACKAGE_REPLACED".equals(action)) { System.out.println(data + "应用被更新..."); Toast.makeText(context, data + "应用被更新...", 1).show(); } else if ("android.intent.action.PACKAGE_REMOVED".equals(action)) { System.out.println("应用被移除..."); Toast.makeText(context, data + "应用被移除...", 1).show(); } }}
<receiver android:name="com.qishui.broadcast.AppReceiver"> <intent-filter > <action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.PACKAGE_REPLACED"/> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package"/> </intent-filter> </receiver>
6、发送自定义广播和接收自定义广播
在MainActivity中发送自定义广播
public void click2(View view){ Intent intent=new Intent(); intent.setAction("qishui.i.tell.you"); intent.putExtra("name", "qishui"); sendBroadcast(intent); }
接收自定义广播
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub CharSequence data = intent.getCharSequenceExtra("name"); System.out.println(data + "接收到了广播"); Toast.makeText(context, data + "接收到了广播", 1).show(); }}
<!-- 接收自定义广播 --> <receiver android:name="com.qishui.broadcast.MyReceiver" > <intent-filter> <action android:name="qishui.i.tell.you" /> </intent-filter> </receiver>
0 0
- broadcast receiver广播接收器
- BroadCast广播接收器
- Broadcast广播接收器
- Broadcast Receiver(广播接收器)
- 广播接收器 broadcast sendOrderedBroadcast android
- Broadcast Receiver(广播接收器)
- 广播接收器 broadcast sendOrderedBroadcast android
- Broadcast Receiver(广播接收器)
- 广播接收器 broadcast sendOrderedBroadcast android
- 广播接收器 broadcast sendOrderedBroadcast android
- Android 广播接收器(Broadcast Receivers)
- Broadcast Receiver(三)广播接收器的优先级
- 广播接收器—Broadcast Receiver(一)
- 广播接收器—Broadcast Receiver(二)
- 【BroadcastReceiver】广播接收器 broadcast sendOrderedBroadcast android
- 四大组件之广播接收器-Broadcast Receiver
- Android- 活动(Activity), 服务(Service), 广播(Broadcast), 广播接收器(BroadcastReceiver)
- Android- 活动(Activity), 服务(Service), 广播(Broadcast), 广播接收器(BroadcastReceiver)
- 解决java占用cpu高的问题
- 多缓冲区:
- 百度地图api定位到当前城市
- poj 3295 Tautology(枚举)
- js 输入int类型数字后自动在后面加.00,输入double型保留小数点后两位
- Broadcast广播接收器
- 关于intptr_t,64位linux系统中void *与int转换
- 对面向对象中多态的理解
- 第一个qt程序
- 介绍5款非常棒的移动自动化测试工具
- 常见对象_Integer直接赋值的面试题
- Delete Node in a Linked List ---LeetCode
- oracle数据库实例、表空间和用户的关系
- 初始Unity 3D——刚体常用方法