Android -- Broadcast接收
Broadcast是Android四大组件之一,是一种广泛运用的在应用程序之间传输信息的机制。最经典的举例是:
“我们拿广播电台来做个比方。我们平常使用收音机收音是这样的:许许多多不同的广播电台通过特定的频率来发送他们的内容,而我们用户只需要将频率调成和广播电台的一样就可以收听他们的内容了。Android中的广播机制就和这个差不多的道理。”
- 电台发送的内容是语音,而在Android中我们要发送的广播内容是一个Intent。这个Intent中可以携带我们要传送的数据。
- 电台通过大功率的发射器发送内容,而在Android中则是通过sendBroadcast这个方法来发送。
- 用户通过调整到具体的电台频率接受电台的内容。而在Android中要接受广播中的内容则是通过注册一个BroadCastReceiver来接收的。只有发送广播的action和接收广播的action相同,接受者才能接受这个广播。
我们拿代码说话
IP拨号的实现
配置文件:
<receiver
android:name="com.iidcdut.ipcall.OutCallReceiver">
<intent-filter >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
onCreate里面主要是对SharePrefence配置,设置拨号时候要加的IP,然后BroadcastReceiver里面就是对要拨出去的号码进行加IP操作。
public class MainActivity extends Activity {
private EditText edit_ipnumber;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit_ipnumber = (EditText) findViewById(R.id.edit_ipnumber);
sp = getSharedPreferences("config", MODE_PRIVATE);
edit_ipnumber.setText(sp.getString("ipnumber", ""));
}
public void click(View view)
{
String ipnumber = edit_ipnumber.getText().toString();
Editor editor = sp.edit();
editor.putString("ipnumber", ipnumber);
editor.commit();
Toast.makeText(this, "设置OK", Toast.LENGTH_LONG).show();
}
}
广播接收:
public class OutCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("onReceive 发现新外拨电话");
String number = getResultData();
System.out.println("number="+number);
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String ipnumber = sp.getString("ipnumber", "");
String newnumber = ipnumber + number;
setResultData(newnumber);
}
}
短信拦截
像360的app里面就有垃圾短信拦截的功能,其实就是通过广播实现的。
配置文件:
<receiver android:name="com.yydcdut.smslistener.SmsReceiver">
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
广播里面:
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("收到短信");
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for(Object pdu : pdus)
{
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
String body = smsMessage.getMessageBody();
String sender = smsMessage.getOriginatingAddress();
System.out.println("body"+body);
System.out.println("sender"+sender);
abortBroadcast();
}
}
}
我是天王盖地虎的分割线
源代码:http://pan.baidu.com/s/1dD1Qx01
利用广播IP拨号.zip
短信窃(和谐)听(和谐)器.zip
转载请注明出处:http://www.cnblogs.com/yydcdut
Android -- Broadcast接收的更多相关文章
- android Broadcast介绍
在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的Broadcast进行过滤接受并响应的一类组件.发送Broadca ...
- Android Broadcast Receiver 使用入门
Broadcast Receiver 的使用 1.Broadcast Receiver简介 2.Broadcast Receiver接收系统自带的广播 3.自 ...
- Android BroadcastReceiver 接收收到短信的广播
一.知识介绍 1.broadcastReceiver是广播接受者,四大组件之一. 2.Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息. 3.使用场景: ①当手机没有电 ...
- Android——SMS接收发短信与运行权限
好久没写了,最近学习Android的相关知识,包括UI组件与布局.Activity生命周期等,而这次要讲的是,Broadcast Receiver的相关知识,主要是接收发短信,SmsManager.S ...
- Android Broadcast Security(转)
原文地址:http://drops.wooyun.org/tips/4393 0x00 科普 Broadcast Recevier 广播接收器是一个专注于接收广播通知信息,并做出对应处理的组件.很多广 ...
- android Broadcast 总结
1, 生命周期 在android官方文档中,推荐我们在onResume中进行 registerReceiver, 在onPause中进行unRegisterReceiver. 他们给出的理由是: If ...
- Android Broadcast Receive
Broadcast Receive 广播接收(Broadcast Receive)为android的四大组件之一.主要用于监听广播消息,并做出响应.与应用程序中监听事件相比而言,该监听事件为全局监听. ...
- android Broadcast广播消息代码实现
我用的是Fragment , 发送写在一个类中,接收写在另外一个类的内部类中.代码动态实现注册. 代码: myReceiver = new zcd.netanything.MyCar.myReceiv ...
- Android Broadcast Receiver
说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...
随机推荐
- lua常用函数
select (index, ···) 功能:当index为数字将返回所有index大于index的参数: 如:select(2,"a","b","c ...
- 红黑树(RB Tree)
看到一篇很好的文章 文章来源:http://www.360doc.com/content/15/0730/00/14359545_488262776.shtml 红黑树是一种高效的索引树,多于用关联数 ...
- 湖南大学ACM程序设计新生杯大赛(同步赛)A - Array
题目描述 Given an array A with length n a[1],a[2],...,a[n] where a[i] (1<=i<=n) is positive integ ...
- Openstack关于Regions和Availability Zones
在AWS中有Region和Availability Zones的概念,并且在openstack中也实现了两者,只是不太容易看出来. 此文主要介绍他们的概念和关系,以及在openstack中的实现. 如 ...
- centos7 更改时区
Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit ...
- hihocoder #1071 : 小玩具
闻所未闻的$dp$神题(我不会的题) 令$f[S][i]$表示子集状态为$S$,且$S$中最大联通块恰好为$i$的方案数 考虑转移,我们枚举$S$中最小的元素$v$来转移,这样就能不重 $f[S][i ...
- 51nod1981 如何愉快地与STL玩耍
先摆官方题解吧......... ....................有什么好讲的呢....... 注意一些地方常数优化一下.......然后......$bitset$怎么暴力怎么来吧..... ...
- 2017-2018-1 JAVA实验站 冲刺 day03
2017-2018-1 JAVA实验站 冲刺 day03 各个成员今日完成的任务 小组成员 今日工作 完成进度 张韵琪 写博客.进行工作总结 100% 齐力锋 部分按钮图片.对按钮图片进行ps 100 ...
- [CC-CHEFGRPH]Time to Study Graphs with Chef
[CC-CHEFGRPH]Time to Study Graphs with Chef 题目大意: 一个有向图可以分成\(n+2(n\le10^{12})\)层,第\(0\)层和第\(n+1\)层有\ ...
- django-附件上传、media、extra、事务
1 普通上传 1.1 html <form action="/index/" method="post" enctype="multipart/ ...