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(); } }
3.
BroadcastReceiver广播接受者简单使用的更多相关文章
- BroadcastReceiver广播接受者
广播接收器的两种注册方式: 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver() ...
- Android BroadcastReceiver广播接受者
静态注册 配置清单表注册:只要曾经注册过哪怕关闭也能调用 方式一:sendBroadCastReceive 广播的步骤: 发送 无序广播,普通广播 (1).发送方 ...
- 本地广播的简单示例 --Android开发
1.局部通知管理器LocalBroadcastManager,用于同一个应用中不同组件之间发送广播.由于是在同应用中发送广播,所以使用它安全性.效率也会提高. 2.本例实现简单的发送本地广播的案例 点 ...
- Android 学习笔记 BroadcastReceiver广播...
PS:不断提升自己,是件好事... 学习内容: 1.BroadcastReceiver的使用.. 2.通过BroadcastReceiver去启动Service... 1.BroadcastRecei ...
- BroadcastRecevier广播接受者
广播接收器的两种注册方式: 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver() ...
- Android的BroadcastReceiver 广播 短信拦截
如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...
- Android四大组件之一:BroadCastReceiver(广播接收者)
广播接受者是(BroadCastReceiver)是Android中的地大组件之一,之前学习了一些关于BroadCastReceiver方面的知识,今天回过头来发现已经快忘记的差不多了,毕竟现在是刚开 ...
- android84 广播接受者
#广播接收者(广播接受者进程关闭了也能接收到广播,系统会在清单文件中找哪个广播接受者可以收到这条广播,然后去启动这个接受者的进程,找不到则广播发了就发了没人收到而已) * 现实中:电台要发布消息,通过 ...
- 在Service中使用广播接受者
1.清单文件 <service android:name="com.example.callmethod.MyService"></service> 2.开 ...
随机推荐
- 05《UML大战需求分析》之五
调研需求的时候,用户会说这个软件要具备怎样的功能,能做什么事情等,这些是功能性的需求.部署图和构件图是用来描述软件架构的,但是我又怀疑软件需求调研也需要确定软件架构吗? 我阅读了一个例子,一个软件公司 ...
- Auto Layout压缩阻力及内容吸附讲解
Auto Layout压缩阻力及内容吸附讲解 本文为投稿文章,作者:梁炜V 在Auto Layout的使用中,有两个很重要的布局概念:Content Compression Resistance 和 ...
- day28 re(正则)模块
目录 re模块有什么用? re模块的基础使用 元字符 终极 贪婪模式 非贪婪模式 re模块高级 comple match和search re.split() sub和subn 分组 re模块有什么用? ...
- ES2015 模板字符串 ``
js中类似`${xx,yy}`的语句是什么意思? `string` 是模板字符串,ES2015新增的符号. var x = 'a', y = 'b'; var z = `${x,y}`; //'b' ...
- ListUtil常用操作
/** * 获取列表总页数 */ public static <T> int getListPages(List<T> list,int pageNum,int pageSiz ...
- Python笔记12-----画图Matplotlib
1.matplotlib:pyplot和pylab 如: import pylab as pl pl.figure(figsize=(8,6),dpi=100)[建立的图像大小和图的精度] pl.pl ...
- Be born
2018-07-22 16:22:03 Cherry is being greater and greater!
- Java中发邮件的6种方法
1.官方标准JavaMail Sun(Oracle)官方标准,功能强大,用起来比较繁琐. 官方资料:http://www.oracle.com/technetwork/java/javamail/in ...
- keepalived安装实现nginx主备高可用
. keepalived安装环境 su - root yum -y install kernel-devel* yum -y install openssl-* yum -y install popt ...
- xml01 验证
xml 验证 拥有正确的格式的xml是"形势良好"的xml 通过DTD验证的xml是"合法的"xml